我正在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(r'^ login / $',include('login.urls',namespace ='login')),并且它没有改变任何内容。
答案 0 :(得分:43)
问题在于您在主要网址中包含身份验证网址的方式。 因为你同时使用^和$,所以只有空字符串匹配。放弃$。