Câu hỏi django - không có đối sánh ngược cho chế độ xem đăng nhập


Tôi chỉ cố gắng ra django và làm theo các tài liệu để xác thực.

Về cơ bản, tôi muốn xem trang biểu mẫu đăng nhập của người dùng, nhưng tôi nhận được:

Caught NoReverseMatch while rendering: Reverse for ''django.contrib.auth.views.login'' with arguments '()' and keyword arguments '{}' not found.

Tệp urls.py của tôi:

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

urlpatterns = patterns('',
    url(r'^accounts/login/$', 'django.contrib.auth.views.login'),
)

Settings.py của tôi (INSTALLED_APPS)

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
)

EDIT: Tôi nhận ra tôi đã nhìn vào điều sai trái. Lỗi xảy ra trong tệp mẫu:

{% if form.errors %}
<p>Your username and password didn't match. Please try again.</p>
{% endif %}

<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
{% csrf_token %}
<table>
<tr>
    <td>{{ form.username.label_tag }}</td>
    <td>{{ form.username }}</td>
</tr>
<tr>
    <td>{{ form.password.label_tag }}</td>
    <td>{{ form.password }}</td>
</tr>
</table>

<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>

Cụ thể cho dòng:

<form method="post" action="{% url 'django.contrib.auth.views.login' %}">

22
2017-12-25 17:36


gốc




Các câu trả lời:


Thử cái này:

url(r'^accounts/login$', 'django.contrib.auth.views.login'),

Và sau khi chỉnh sửa của bạn:

<form method="post" action="{% url django.contrib.auth.views.login %}">

CHỈNH SỬA trong settings.py tập tin của django, dòng này:

APPEND_SLASH = False

cho biết liệu url đảo ngược của bạn có kết thúc bằng dấu gạch chéo hay không. Sau đó

APPEND_SLASH = True
url(r'^accounts/login/', 'django.contrib.auth.views.login')

cũng nên làm việc.


16
2017-12-25 20:52



Tôi đã xem sai tệp ... kiểm tra chỉnh sửa - AlexBrand
Câu lệnh này không chính xác: There should not be single quotation around... theo tài liệu Django mới nhất docs.djangoproject.com/en/dev/ref/templates/builtins/#url . Câu trả lời đúng là stackoverflow.com/a/8631551/781695 - user


Thử đặt tên cho url và sử dụng nó trong thẻ url:

url(r'^accounts/login/$', 'django.contrib.auth.views.login', name='login'),

và trong mẫu:

<form method="post" action="{% url 'login' %}">

33
2017-12-25 21:00



Điều này là đúng tôi nghĩ. Các câu trả lời khác tiếp tục gợi ý tham chiếu đường dẫn gói python thay vì tên trong url bài đăng của mẫu - jdi
CÁi này đã sửa nó giúp tôi. Cảm ơn. - adamek
Nó làm việc cho tôi. Lưu ý rằng trong câu trả lời asdf_enel_hak, cụm từ thông dụng url không kết thúc bằng metacharacter $, vì vậy có thể là vấn đề bảo mật? - viridis
+1 - Sử dụng tốt các mẫu url được đặt tên để tránh sự mơ hồ. Thậm chí tốt hơn sẽ là sử dụng action="{% url 'myapp:login' %}" - user
Lưu ý rằng trong 1.5 và sau đó, url yêu cầu một chuỗi, vì vậy bạn sẽ cần báo giá, tức là {% url 'login' %} - ZAD-Man


Thử thêm tên = 'đăng nhập' làm từ khóa trong url

url(r'^accounts/login/$', 'django.contrib.auth.views.login', name='login'),

và sau đó gọi ngược lại ('đăng nhập').


5
2017-12-25 17:57



vẫn gặp lỗi tương tự khi cố truy cập vào localhost / accounts / login - AlexBrand
Tôi đã xem sai tệp ... kiểm tra chỉnh sửa - AlexBrand


Theo tôi thì tốt hơn urls.py tập tin (để được sạch sẽ và vẫn còn rất rõ ràng), cũng được cập nhật cho Django 1,10 sẽ là:

from django.conf.urls import url
from django.contrib.auth import views as auth_views

urlpatterns = [
    url(r'^accounts/login/$', auth_views.login, name='login')
]

Và trong mẫu:

<form method="post" action="{% url 'login' %}">

Lưu ý rằng url bây giờ yêu cầu một chuỗi để 'login' trong mẫu phải có dấu ngoặc kép.


4
2017-12-02 11:40





Điều này là để làm với việc đặt tên các url ứng dụng của bạn trong tệp project / urls.py. Một giải pháp là xóa không gian tên và viết ra từng url một cách rõ ràng nhưng đối với vấn đề cụ thể này ...

Điều này sẽ hoạt động:

<form method="post" action="{% url '<namespace_name>:django.contrib.auth.views.login' %}">

1
2018-01-08 21:28