2011-12-25 14 views
19

मैं सिर्फ django का प्रयास कर रहा हूं और प्रमाणीकरण के लिए प्रलेखन का पालन कर रहा हूं।django - लॉगिन दृश्य के लिए कोई रिवर्स मैच

असल में मैं उपयोगकर्ता लॉगिन प्रपत्र पृष्ठ पर एक नज़र ले जाना चाहते हैं, लेकिन मैं हो रही है:

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

मेरे urls.py फ़ाइल:

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

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

मेरे settings.py (INSTALLED_APPS)

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

संपादित करें: मैं r ealized मैं गलत बात देख रहा था।

{% 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> 
विशेष रूप से लाइन के लिए

:

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

उत्तर

16

इस प्रयास करें:

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

संपादितsettings.py Django की फ़ाइल, इस पंक्ति में :

APPEND_SLASH = False

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

और आपके संपादन के बादबताता है कि क्या आपका रिवर्स यूआरएल स्लैश के साथ खत्म हो गया है या नहीं। फिर

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

भी काम करना चाहिए।

+0

मैं गलत फ़ाइल देख रहा था ... संपादित करें – AlexBrand

+1

यह कथन गलत है: ' नवीनतम Django दस्तावेज़ों के अनुसार https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url के अनुसार ... के आसपास एकल उद्धरण नहीं होना चाहिए। सही उत्तर http://stackoverflow.com/a/8631551/781695 – Medorator

5

यूआरएल

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

inthe एक कीवर्ड के रूप name = 'लॉगिन' जोड़ने का प्रयास करें और फिर बुला रिवर्स टेम्पलेट फ़ाइल में त्रुटि होती है ('लॉग इन करें')।

+1

स्थानीयहोस्ट/अकाउंट्स/लॉगिन – AlexBrand

+0

तक पहुंचने का प्रयास करते समय भी वही त्रुटि मिलती है, मैं गलत फाइल देख रहा था ... संपादित करें – AlexBrand

29

यूआरएल के लिए नाम तय करने और यूआरएल टैग में इसका इस्तेमाल करने का प्रयास करें:

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

और टेम्पलेट में:

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

यह सही है मुझे लगता है। अन्य उत्तर टेम्पलेट – jdi

+1

के पोस्ट यूआरएल में नाम के बजाय पायथन पैकेज पथ का संदर्भ देने का सुझाव देते हैं, यह मेरे लिए तय है। धन्यवाद। – adamek

+0

यह मेरे लिए भी काम करता था। ध्यान दें कि asdf_enel_hak उत्तर में यूआरएल नियमित अभिव्यक्ति मेटाएक्टेक्टर $ के साथ समाप्त नहीं होती है, तो एक सुरक्षा समस्या हो सकती है ?? – viridis

1

इस परियोजना/urls.py में अपने एप्लिकेशन यूआरएल नेमस्पेसिंग के साथ क्या करना है फ़ाइल। करने के लिए

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

मेरी राय में एक बेहतर urls.py फ़ाइल में (: एक समाधान नाम स्थान को हटा दें और स्पष्ट रूप से, लेकिन इस विशेष समस्या के लिए प्रत्येक यूआरएल को लिखने के लिए ...

यह काम करना चाहिए है स्वच्छ और अभी भी बहुत स्पष्ट हो), Django 1 के लिए भी अद्यतन किया गया।10 होगा:

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') 
] 

और टेम्पलेट में:

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

ध्यान दें कि url अब एक स्ट्रिंग की आवश्यकता है ताकि टेम्पलेट में 'login' उद्धरण में होना चाहिए।

संबंधित मुद्दे