Django登录消失了?(找到修复程序,正在寻找解释)
好的,在摆弄了一点并安装了调试工具条之后,删除以下行后问题就消失了Django登录消失了?(找到修复程序,正在寻找解释),django,authentication,django-urls,Django,Authentication,Django Urls,好的,在摆弄了一点并安装了调试工具条之后,删除以下行后问题就消失了 urlpatterns = patterns('', # some other patterns url(r'^(?P<tag_name>.+)/$','myapp.views.tag_details',name = 'tag_details'),#<<--- #!!! removing above line solves the problem ) + static(s
urlpatterns = patterns('',
# some other patterns
url(r'^(?P<tag_name>.+)/$','myapp.views.tag_details',name = 'tag_details'),#<<---
#!!! removing above line solves the problem
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += patterns(
'django.contrib.auth.views',
url(r'^login/', 'login',
{'template_name' : 'login.html'},
name = 'constituency_login'),
url(r'^logout/', 'logout',
{'next_page' : 'constituency_login'},
name = 'constituency_logout'),
模板/login.html
{% extends "base.html" %}
{% load staticfiles %}
{% block content%}
{% if form.errors %}
<p class="alert"> Your username and/or password didn't match </p>
{% endif%}
<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
<div class="input-group ">
<span class="input-group-addon" ><span class="glyphicon glyphicon-user"></span></span>
<input type="text" class="form-control" placeholder="Username" id="{{ form.username.id_for_label }}" maxlength="30" name="{{ form.username.html_name }}" />
</div>
<div class="input-group ">
<span class="input-group-addon" ><span class="glyphicon glyphicon-lock"></span></span>
<input type="password" class="form-control" placeholder="Password" id="{{ form.password.id_for_label }}" name="{{ form.password.html_name }}" type="text" />
</div>
<input class="btn" type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
</div>
</div>
</div>
{% endblock %}
我没有对这些做任何更改。事实上,从那以后我添加了多个特性。Django总是在
urlpatterns
中返回第一个正则表达式匹配项。您的标记\u详细信息
视图的正则表达式将所有非空模式与+
匹配。由于您的登录和注销url位于url模式中的tag\u details
视图之后,因此这两个视图都与tag\u details
视图匹配
您必须确保您的tag\u details
视图在模式中排在最后,或者使用一些前缀,例如/tag/
。尽可能限制正则表达式模式也是一种很好的做法。如果不允许在标记名中使用特殊字符,如斜杠等,最好使用r'^(?P[\w]+)/$”
等模式
{% extends "base.html" %}
{% load staticfiles %}
{% block content%}
{% if form.errors %}
<p class="alert"> Your username and/or password didn't match </p>
{% endif%}
<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
<div class="input-group ">
<span class="input-group-addon" ><span class="glyphicon glyphicon-user"></span></span>
<input type="text" class="form-control" placeholder="Username" id="{{ form.username.id_for_label }}" maxlength="30" name="{{ form.username.html_name }}" />
</div>
<div class="input-group ">
<span class="input-group-addon" ><span class="glyphicon glyphicon-lock"></span></span>
<input type="password" class="form-control" placeholder="Password" id="{{ form.password.id_for_label }}" name="{{ form.password.html_name }}" type="text" />
</div>
<input class="btn" type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
</div>
</div>
</div>
{% endblock %}
LOGIN_URL = 'myapp_login'
LOGOUT_URL = 'myapp_logout'
LOGIN_REDIRECT_URL = 'index'