Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-Ajax注册_Django_Django Views_Django Registration - Fatal编程技术网

Django-Ajax注册

Django-Ajax注册,django,django-views,django-registration,Django,Django Views,Django Registration,我正在尝试允许从模式对话框注册(使用此视图)我的一个应用程序 由于此表单位于模式框中,我希望在成功时获得json响应(而不是默认重定向) 如何使用此视图()管理注册并在成功时发回json响应 我知道如何做出ajax/json响应,问题是如何在没有重定向行为的情况下使用django注册视图,或者将其包装到另一个视图中来管理响应。为什么我要做的是检查是否请求。是否是\u ajax()在正常的成功后完全注册重定向视图中,并在那里返回json响应。您询问如何使用现有视图管理注册,并在成功后返回json

我正在尝试允许从模式对话框注册(使用此视图)我的一个应用程序

由于此表单位于模式框中,我希望在成功时获得json响应(而不是默认重定向)

如何使用此视图()管理注册并在成功时发回json响应



我知道如何做出ajax/json响应,问题是如何在没有重定向行为的情况下使用django注册视图,或者将其包装到另一个视图中来管理响应。

为什么我要做的是检查
是否请求。是否是\u ajax()
在正常的成功后完全注册重定向视图中,并在那里返回json响应。

您询问如何使用现有视图管理注册,并在成功后返回json响应。由于HttpResponseRedirect在视图中几乎是硬编码的,因此不能按原样使用视图。相反,请使用fork,或者编写自己的视图并更改url.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)))

希望这有帮助

首先,您需要更改url.py以使用其他功能包装现有视图。要做到这一点,您必须在backends文件夹中创建一个新的后端包,并在那里更改URL.py,同时保持其他所有内容不变,或者您可以继续修改后端包中现有的URL.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

如果你需要更多的视图,你可以用它创建一个装饰器

首先,如何呈现表单及其最终错误?我使用标准http响应重新加载表单。因此,如果我收到http响应,我只需将其加载到containerOk中,我现在了解您的要求,但没有包装类似视图的经验,因此很遗憾,我无法帮助您完成这项工作。这似乎更适合我的需要。让我试试没问题。谢谢你的提问,我学到了一个新东西:)