4

django-registration registerモーダルダイアログからアプリケーションの1つに(このビューを使用して)登録できるようにしようとしています。

このフォームはモーダルボックスに入っているので、(デフォルトのリダイレクトではなく)成功時にjsonの応答を取得したいと思います

django-registration registerこのビュー( )を使用して登録を管理し、成功時にjson応答を送り返すにはどうすればよいですか?


私はajax/json応答を作成する方法を知っています。問題は、リダイレクト動作なしでdjango-registrationビューを使用する方法、または応答を管理するために別のビューにラップする方法です。

4

3 に答える 3

2

まず、urls.pyを変更して、既存のビューを別の機能でラップする必要があります。これを行うには、バックエンドフォルダーに新しいバックエンドパッケージを作成し、他のすべてをそのままにして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

より多くのビューでこれが必要になる場合は、これを使用してデコレータを作成できます。

于 2012-11-22T09:51:18.877 に答える
0

私が行う理由はrequest.is_ajax()、通常の成功後の完全登録リダイレクトビューであるかどうかを確認し、そこにjson応答を返すことです。

于 2012-11-22T08:19:05.573 に答える
0

既存のビューを使用して登録を管理し、成功時にjson応答を返送する方法を尋ねます。HttpResponseRedirectはビューにかなりハードコーディングされているため、ビューをそのまま使用することはできません。代わりに、フォークするか、独自のビューを作成してurls.pyを変更し、r'^ register/$'が新しいビューを指すようにします。

jsonの応答に関する限り、成功すると次のようなことができます。

from django.utils import simplejson as json

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

お役に立てれば

于 2012-11-22T09:02:00.323 に答える