【问题标题】:Django - NoReverseMatch at /Django - NoReverseMatch 在 /
【发布时间】:2016-07-20 11:05:29
【问题描述】:

我正在尝试为我的 Django 项目实施登录和注册系统。我目前收到此错误...

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

这是我的一些代码,希望您能提供帮助......

网址.py

urlpatterns = [
url(r'^stocks/$', StockView.as_view(), name='stocks'),
url(r'^$', IndexView.as_view(), name="index"),
#url(r'^data/$', DataView.as_view(), name='data'),
url(r'^quizzes/$', DefView.as_view(), name='quizzes'),
url(r'^tickers/$', DefView.as_view(), name='ticker'),

url(r'^accounts/login/$', 'stockmarket.views.login'),
url(r'^accounts/auth/$', 'stockmarket.views.auth_view'),
url(r'^accounts/logout/$', 'stockmarket.views.logout'),
url(r'^accounts/loggedin/$', 'stockmarket.views.loggedin'),
url(r'^accounts/invalid/$', 'stockmarket.views.invalid_login'),

url(r'^accounts/register/$', 'stockmarket.views.register_user'),
url(r'^accounts/register_success/$', 'stockmarket.views.register_success'),

]

Views.py

from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.contrib import auth
from django.core.context_processors import csrf
from django.contrib.auth.forms import UserCreationForm


def login(request):
    c = {}
    c.update(csrf(request))
    return render_to_response('login.html', c)


def auth_view(request):
    username = reqruest.POST.get('username', '')
    password = request.POST.get('password', '')
    user = auth.authenticate(username=username, password=password)

    if user is not None:
        auth.login(request, user)
        return HttpResponseRedirect('/accounts/loggedin')
    else:
        return HttpResponseRedirect('/accounts/invalid')


def loggedin(request):
    return render_to_response('loggedin.html', {'full_name': request.user.username})


def invalid_login(request):
    return render_to_response('invalid_login.html')


def logout(request):
    auth.logout(request)
    return render_to_response('logout.html')


def register_user(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/register_success')

    args = {}
    args.update(csrf(request))
    args['form'] = UserCreationForm()

    return render_to_response('register.html', args)


def register_success(request):
    return render_to_response('register_success.html')

感谢您的帮助。

【问题讨论】:

    标签: django python-3.x django-registration


    【解决方案1】:

    在您的项目中的某个地方,您使用了 django 的 urlresolvers 来返回使用名为 'register' 的命名 url 的 url。

    在看到您的urls.py 后,您似乎没有分配任何带有register 的网址。你应该在合适的地方命名它.. 像这样:

    url(r'^accounts/register/$', 'stockmarket.views.register_user', name='register'),
    

    【讨论】:

      猜你喜欢
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 2017-05-21
      • 2020-08-03
      相关资源
      最近更新 更多