这应该很简单,但是在花了几个小时试图弄清楚这一点,查看过去的代码并在线搜索答案之后,我就没有想法了。
浏览器错误消息:
NoReverseMatch at /accounts/login/ Reverse for 'login' not found. 'login' is
not a valid view function or pattern name.
Request Method: GET
Request URL: http://127.0.0.1:8000/accounts/login/
Django Version: 2.1
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'login' not found. 'login' is not a valid view function or pattern name.
Exception Location: C:Anaconda3envsbookmarkslibsite-packagesdjangourlsresolvers.py in _reverse_with_prefix, line 622
Python Executable: C:Anaconda3envsbookmarkspython.exe
Python Version: 3.6.6
Python Path:
['C:\Users\raine\PycharmProjects\Mapt\bookmarks\bookmarks',
'C:\Anaconda3\envs\bookmarks\python36.zip',
'C:\Anaconda3\envs\bookmarks\DLLs',
'C:\Anaconda3\envs\bookmarks\lib',
'C:\Anaconda3\envs\bookmarks',
'C:\Anaconda3\envs\bookmarks\lib\site-packages']
Server time: Tue, 7 Aug 2018 21:29:41 +0000
项目树:
bookmarks
├───accounts
│ ├───migrations
│ │ └───__pycache__
│ ├───templates
│ │ └───accounts
│ └───__pycache__
├───bookmarks
│ └───__pycache__
├───static
│ └───css
└───templates
书签/网址.py
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('accounts.urls', namespace='accounts'))
]
重定向到帐户/网址.py . 我不希望出现错误,因为我在 url 路径中分配了名称"login"。
app_name = 'accounts'
urlpatterns = [
path('login/',
auth_views.LoginView.as_view(template_name='accounts/login.html'),
name='login'),
path('logout/',
auth_views.LogoutView.as_view(template_name='accounts/logout.html'),
name='logout'),
]
我特别困惑,因为LogoutView有效,而LoginView则不工作。我已经查看了其他一些项目的代码,这些项目完成了同样的事情,并且无法发现任何会导致我当前错误的差异。 很好奇。 该错误并没有让我相信我的模板有问题,但它们仍然在这里。
accounts/login.html
{% extends 'base.html' %}
{% load bootstrap3 %}
{% block title %} Login {% endblock %}
{% block content %}
<h1>Login</h1>
<p>Please use this form to login.</p>
<form class="form" method="post" action="{% url 'login' %}">
{% csrf_token %}
{{ form.as_p }}
{% buttons %}
<input type="hidden" name="next" value="{{next}}" />
<button type="submit" class="btn btn-primary">Submit
</button>
{% endbuttons %}
</form>
{% endblock content %}
accounts/logout.html
{% extends 'base.html' %}
{% block content %}
<h1>Logout</h1>
<p>You have successfully logged out.</p>
<a href="{% url 'accounts:login' %}">Didn't mean to log out? Log back in.</a>
{% endblock content %}
帮助和反馈将不胜感激。 谢谢。
您忘了在表单action
属性accounts/login.html
提及 URL 命名空间{% url 'accounts:login' %}