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'