Django的NoReverseMatch

我在django 1.6(和python 2.7)中制作了一个简单的登录应用程序,但在开始时出现错误,这让我无法继续。

这是网站的url.py

from django.conf.urls import patterns, include, url

from django.contrib import admin

import login

admin.autodiscover()

urlpatterns = patterns('',

url(r'^$', include('login.urls', namespace='login')),

url(r'^admin/', include(admin.site.urls)),

)

这是login / urls.py:

from django.conf.urls import patterns, url

from login import views

urlpatterns = patterns('',

url(r'^$', views.index, name='index'),

url(r'^auth/', views.auth, name='auth'),

)

这是登录名/视图,py

from django.shortcuts import render

from django.contrib.auth import authenticate

def auth(request):

user = authenticate(username=request.POST['username'], password=request.POST['password'])

if user is not None:

# the password verified for the user

if user.is_active:

msg = "User is valid, active and authenticated"

else:

msg = "The password is valid, but the account has been disabled!"

else:

# the authentication system was unable to verify the username and password

msg = "The username and password were incorrect."

return render(request, 'login/authenticate.html', {'MESSAGE': msg})

def index(request):

return render(request, 'login/login_form.html')

我有一个将其作为操作的表格:

{% url 'login:auth' %}

这就是问题所在,当我尝试加载页面时,我得到:

Reverse for 'auth' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: [u'$auth/']

但是如果我将网址格式设置为

url(r'', views.auth, name='auth')

它工作正常,只有将操作设置为“ /”。

我一直在寻找答案,但我不明白为什么它不起作用。

我尝试将登录url模式更改为url(r’^ login / $’,include(’login.urls’,namespace =’login’)),但没有任何改变。

回答:

问题在于您将身份验证URL包含在主要的URL中。因为您同时使用了^和$,所以只有空字符串匹配。删除$。

以上是 Django的NoReverseMatch 的全部内容, 来源链接: utcz.com/qa/414361.html

回到顶部