我试图允许从模态对话框注册(使用此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响应,我只是将它加载到容器中 –