python - django-registration-redux - NoReverseMatch 在/accounts/register/

标签 python django django-urls

我正在关注 "Tango with Django" tutorial其中一章是关于使用 Registration View Redux 来处理用户身份验证。除了我注册新用户之外,一切正常。用户实际上被添加得很好。但提交后,我没有被重定向到“注册完成”页面,而是收到以下错误:

NoReverseMatch at /accounts/register/

Reverse for 'registration' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
Request Method: POST
Request URL:    http://192.168.2.10:5555/accounts/register/
Django Version: 1.7
Exception Type: NoReverseMatch
Exception Value:    
Reverse for 'registration' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
Exception Location: C:\Python34\Lib\site-packages\django\core\urlresolvers.py in _reverse_with_prefix, line 463
Python Executable:  C:\Python34\python.exe
Python Version: 3.4.2
Python Path:    
['D:\\_python_projects\\tango_with_django_project',
 'C:\\Python34\\Lib\\site-packages\\setuptools-8.2.1-py3.4.egg',
 'C:\\Python34\\lib\\site-packages\\setuptools-8.2.1-py3.4.egg',
 'C:\\Python34\\Lib\\site-packages',
 'C:\\Windows\\system32\\python34.zip',
 'C:\\Python34\\DLLs',
 'C:\\Python34\\lib',
 'C:\\Python34']
Server time:    Sat, 27 Dec 2014 21:04:15 -0500

回溯:

Environment:


Request Method: POST
Request URL: http://192.168.2.10:5555/accounts/register/

Django Version: 1.7
Python Version: 3.4.2
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'rango',
 'registration')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "C:\Python34\Lib\site-packages\django\core\handlers\base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python34\Lib\site-packages\django\views\generic\base.py" in view
  69.             return self.dispatch(request, *args, **kwargs)
File "C:\Python34\Lib\site-packages\registration\views.py" in dispatch
  79.         return super(RegistrationView, self).dispatch(request, *args, **kwargs)
File "C:\Python34\Lib\site-packages\django\views\generic\base.py" in dispatch
  87.         return handler(request, *args, **kwargs)
File "C:\Python34\Lib\site-packages\registration\views.py" in post
  35.             return self.form_valid(request, form)
File "C:\Python34\Lib\site-packages\registration\views.py" in form_valid
  90.             return redirect(to, *args, **kwargs)
File "C:\Python34\Lib\site-packages\django\shortcuts.py" in redirect
  74.     return redirect_class(resolve_url(to, *args, **kwargs))
File "C:\Python34\Lib\site-packages\django\shortcuts.py" in resolve_url
  158.         return urlresolvers.reverse(to, args=args, kwargs=kwargs)
File "C:\Python34\Lib\site-packages\django\core\urlresolvers.py" in reverse
  546.     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "C:\Python34\Lib\site-packages\django\core\urlresolvers.py" in _reverse_with_prefix
  463.                              (lookup_view_s, args, kwargs, len(patterns), patterns))

Exception Type: NoReverseMatch at /accounts/register/
Exception Value: Reverse for 'registration' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

我的注册表模板:

{% extends "rango/base.html" %}
{% block title %}Register{% endblock %}

{% block body_block %}
    <h1>Register to Rango</h1>
    <form method="post" action=".">
        {% csrf_token %}
        {{ form.as_p }}

        <input type="submit" value="Submit" />
    </form>
{% endblock %}

url.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings


urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'tango_with_django_project.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^accounts/', include('registration.backends.simple.urls', namespace='registration')),
    url(r'', include('rango.urls', namespace='rango')),

)

有什么想法吗?

最佳答案

您需要更改 urls.py 文件以添加扩展默认 RegistrationView 的类:

from registration.backends.simple.views import RegistrationView    
class MyRegistrationView(RegistrationView):
        def get_success_url(self, request, user):
            return '/rango/'

然后更新您的网址模式,使其如下所示:

url(r'^accounts/register/$', MyRegistrationView.as_view(), name='registration_register')

我希望这会有所帮助。

关于python - django-registration-redux - NoReverseMatch 在/accounts/register/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27673199/

相关文章:

python - 无法使用 Falcon API 和 Python 设置 cookie

python - MongoDb:$按 $in 排序

python - 无效的正则表达式 : invalid escape\sequence, Postgres、Django

django - 链接到 django 管理站点

python - 找不到页面 (404) - 没有产品与给定的查询匹配

django - 如何在 Django 中将可选参数传递给 url

python - python脚本如何知道自己运行在nohup模式下?

python - 将列表与字典索引进行比较并根据原始列表顺序返回字典值

python - 在 Django 中从 Javascript 引用静态图像

python - 我不能忽略 Django 上的 pycache 和 db.sqlite,即使它在 .gitignore 中引用它们