2012-06-21 8 views
17

मुझे पासवर्ड_Reset_confirm बिट काम करने में कोई समस्या है।पासवर्ड_Reset_confirm पर NoReverseMatch

यूआरएल:

(r'^password_reset/$', 'django.contrib.auth.views.password_reset'), 
(r'^password_reset_done/$', 'django.contrib.auth.views.password_reset_done'), 
(r'^password_reset_confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'), 

password_reset_email.html है, जो इसमें शामिल हैं:

{% load url from future %} 
Someone asked for password reset for email {{ email }}. Follow the link below: 
{{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb36=uid token=token %} 

लेकिन तब पासवर्ड reseting के लिए अपने ईमेल भेजने के बाद, मैं इस त्रुटि से पता चला संदेश मिलता है:

NoReverseMatch/password_reset पर/के लिए रिवर्स तर्क के साथ'password_reset_confirm' तर्क() 'और कीवर्ड तर्क ' {'uidb36': '1', 'टोकन': '38d-b5ec0b2a2321f522f954'} नहीं मिला।

मैंने सोचा कि चूंकि यह एक निर्माण का उपयोग कर रहा था, मुझे किसी और चीज पर ध्यान नहीं देना पड़ेगा?

सलाह के लिए धन्यवाद,

अद्यतन:

पूर्ण पथ का उपयोग करने के बाद, यह काम करने लगता है। हालांकि यह दो ईमेल भेजता है: और प्रत्येक के पास एक अलग लिंक है। ऐसा क्यों है? और मैं {{domain}} कहां सेट करूं? धन्यवाद

Follow the link below: 
http://example.com/password_reset_confirm/1-38d-b5ec0b2a2321f522f954/ 

Follow the link below: 
http://example.com/password_reset_confirm/2-38d-18482e1f129c84b9c2bc/ 

अद्यतन 2

मैं यह पता लगा। बस किसी और को यह समस्या है।

व्यवस्थापक या Django कंसोल में:: आप अपने आवेदन के लिए स्थल के रूप में अपने डोमेन नाम निर्धारित करने की आवश्यकता

>>> my_site = Site.objects.get(pk=1) 
>>> my_site.domain = 'somedomain.com' 
>>> my_site.name = 'Some Domain' 
>>> my_site.save() 

दूसरी समस्या कारण है कि आप दो ईमेल मिल सकता है जब रीसेट है आप हो सकता है क्योंकि एक ही ईमेल पते से जुड़े एकाधिक उपयोगकर्ता नाम। यह बहुत मूर्खतापूर्ण है। यह अगली बात है जिसे मुझे निपटाना है।

+3

मुझे लगता है कि आप यूआरएल के नाम के बजाय दृश्य का नाम निर्दिष्ट करने के लिए लगता है कि कर रहे हैं:

urlpatterns = [ url('^', include('django.contrib.auth.urls')) ] 

https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.views.password_reset अनुभाग देखें। कुछ '{% url 'django.contrib.auth.views.password_reset_confirm' ...%}' –

+0

हां जिसने काम किया है। अजीब, क्योंकि मैंने Django दस्तावेज़ीकरण से इसकी प्रतिलिपि बनाई थी। अब दो समस्याएं बाकी हैं, कृपया अद्यतन प्रश्न देखें। धन्यवाद – Houman

+0

सीज़र, मैंने अन्य दो समस्याओं को ठीक किया और सवाल अपडेट किया। अगर आप अपनी टिप्पणी को उत्तर के रूप में रखना चाहते हैं और मैं जवाब के रूप में इसे बंद कर दूंगा। धन्यवाद – Houman

उत्तर

4

url टेम्पलेट टैग का उपयोग करते हैं, तो आप देख सकते हैं और न ही यूआरएल निर्दिष्ट करने के लिए की जरूरत है। चूंकि आप अपने URLConf में 'django.contrib.auth.views.password_reset_confirm' उपयोग कर रहे हैं तो आप इसे इस का उपयोग करना चाहिए:

{% url 'django.contrib.auth.views.password_reset_confirm' ... %} 

Django के Built-in template tags and filters प्रलेखन पर url टेम्पलेट टैग के बारे में अधिक।

0

यह एक अंतर्निहित दृश्य हो सकता है, लेकिन आपको अभी भी इसके लिए एक यूआरएल चाहिए। आपको urls.py में एक को परिभाषित करना चाहिए और इसे password_reset_confirm व्यू पर लिंक करना चाहिए।

+0

मेरे पास पहले से ही इसके लिए एक यूआरएल परिभाषित किया गया है, ऊपर देखें .. (जब तक मैं आपको गलत समझा नहीं जाता) सीज़र का समाधान वास्तव में काम करता है। लेकिन अब मैं अभी तक पूरी तरह से नहीं हूं। बस सवाल को अद्यतन किया। धन्यवाद – Houman

9

url टेम्पलेट टैग के लिए एक यूआरएल पास करने के लिए, आप urls.py

url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', 
views.password_reset_confirm, name='password_reset_confirm'), 

में यूआरएल के लिए एक name निर्दिष्ट कर सकते हैं और फिर आप यूआरएल नाम

{% url 'password_reset_confirm' uidb64=uid token=token %} 
0

साथ टैग का उपयोग कर सकते बस इस यूआरएल को अपनी मुख्य urls.py फ़ाइल में कॉपी करें, ताकि यह यूआरएल नाम

को पहचानता है

यूआरएल (आर '^ रीसेट/(? पी [0-9 ए-जेए-जे _-] +)/(? पी [0-9 ए-जेए-जेड] {1,13} - [0-9 ए-ज़ा- z] {1,20})/$ ', ' django.contrib.auth.views.password_reset_confirm ', name =' password_reset_confirm '),

0

अपने urls.py में इस राशि के लिए सुनिश्चित करें: प्रमाणीकरण विचारों

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