我試圖允許從模態對話框註冊(使用此django-registration register
視圖)我的應用程序之一。Django - Ajax註冊
由於這種形式是一個模式對話框,我想獲得成功(而不是默認的重定向)
如何使用這個視圖(django-registration register
)的JSON效應初探管理登記和發回復json對成功的迴應?
我知道如何使AJAX/JSON響應,問題是如何使用Django的註冊視圖,而不重定向行爲,或將其包裝成另一種觀點來管理響應。
我試圖允許從模態對話框註冊(使用此django-registration register
視圖)我的應用程序之一。Django - Ajax註冊
由於這種形式是一個模式對話框,我想獲得成功(而不是默認的重定向)
如何使用這個視圖(django-registration register
)的JSON效應初探管理登記和發回復json對成功的迴應?
我知道如何使AJAX/JSON響應,問題是如何使用Django的註冊視圖,而不重定向行爲,或將其包裝成另一種觀點來管理響應。
首先,您需要更改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
如果你將需要這更多的意見你可以創建一個使用這個裝飾。
爲什麼我要做的是檢查在你的正常的successfull-registration-redirect視圖中是否有request.is_ajax()
,並在那裏返回json響應。
你問你如何使用現有的視圖來管理註冊併發送成功的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)))
希望這有助於
謝謝,但檢查我的更新問題 –
好吧,我現在明白你要求什麼,但沒有經驗,像這樣包裝的意見,所以不幸的是不能幫助你接着就,隨即。 – Teisman
如何在第一個地方渲染表單的最終錯誤? –
我使用標準http響應重新加載表單。所以,如果我收到http響應,我只是將它加載到容器中 –