2012-11-22 2 views
2

모달 대화 상자에서 내 응용 프로그램 중 하나에 등록 (이 django-registration register보기 사용)을 허용하려고합니다.Django-Ajax 등록

이 양식 모달 상자에 있기 때문에, 나는 등록을 관리하고 전송할 나는이보기 (django-registration register)를 사용할 수있는 방법

(대신 기본 리디렉션의) 성공에 json으로 reponse를 좀하고 싶습니다 성공에 대한 json 응답을 돌려 받으시겠습니까?


내가 아약스/JSON 응답을 만드는 방법을 알고, 문제는 리디렉션 동작없이 장고 등록보기를 사용하거나 응답을 관리하는 다른보기로 포장하는 방법입니다.

+0

처음에는 오류가있는 양식을 어떻게 렌더링합니까? –

+0

표준 HTTP 응답을 사용하여 양식을 다시로드합니다. 그래서 http 응답을 받으면 컨테이너에 넣기 만하면됩니다. –

답변

2

먼저 도움

from django.utils import simplejson as json 

def register_ajax(request): 
    ... 
    return HttpResponse(json.dumps(dict(success=True, **dict_containing_data))) 

희망을 다른 기능과 함께. 이를 수행하려면 백엔드 폴더에 새 백엔드 패키지를 만들고 다른 모든 것을 그대로 유지하면서 urls.py를 변경해야합니다. 그렇지 않으면 백엔드 패키지의 기존 urls.py를 수정할 수 있습니다.

테스트하지는 않았지만 제대로 작동합니다. 새보기에

포인트 URL은 :

# urls.py 
url(r'^register/$', register_wrap, 
    {'backend': 'registration.backends.default.DefaultBackend'}, 
    name='registration_register'), 

# your new view that wraps the existing one 
def register_wrap(request, *args, **kwargs): 

    # call the standard view here 
    response = register(request, *args, **kwargs) 

    # check if response is a redirect 
    if response.status_code == 302: 
     # this was redirection, send json response instead 
    else: 
     # just return as it is 
     return response 

당신은 그냥이를 사용하여 장식을 만들 수 있습니다 더 전망이 필요하기 위하여려고하는 경우에.

+0

이것은 내 요구에 훨씬 더 적합합니다. 그것을 시도하자 –

+0

잘 일하는 대단히 감사합니다! –

+0

문제 없습니다. 물어 줘서 고마워, 나는 새로운 것을 배웠다 :) – maulik13

0

정상적인 성공 후 등록 리디렉션보기에서 request.is_ajax()이 있는지 확인하고 json 응답을 반환하는 이유는 무엇입니까?

0

기존 뷰를 사용하여 어떻게 등록을 관리하고 성공하면 json 응답을 보낼 수 있는지 질문합니다. HttpResponseRedirect는보기에서 꽤 많이 코딩되었으므로보기를 그대로 사용할 수 없습니다. 대신, 그것을 포크로 만들거나 자신 만의 뷰를 작성하고 urls.py를 변경하여 r 'register/$'가 새로운 뷰로 연결되도록하십시오.

지금까지 JSON 응답에 관한 한, 성공에이 같은 수행 할 수 있습니다 기존 뷰를 포장 할 수있는 urls.py를 변경해야이

+0

고맙습니다. 업데이트 된 질문을 확인하십시오. –

+0

좋아, 이제는 당신이 요구하는 것을 이해하고 있지만보기를 감싸는 경험이 없으므로 불행히도 당신을 도울 수 없습니다. 그것으로. – Teisman