Thanks... I tried... everythings... It worked..
On 10 April 2017 at 13:21, ludovic coues <[email protected]> wrote: > That should be all the information needed to fix the problem :) > > TL:DR: > use `{{ protocol }}://{{ domain }}{% url > 'user_management:password_reset_confirm' > uidb64=uid token=token %}` on line 5 of your email template. > > Long answer: > The amount of information you provided last time would have been enough > for my gut feeling, which is the same as the tl;dr. But I needed pretty > much everything you have given here to be sure :) > > The traceback is pretty much useless to finding the origin of the error > with template. That's why there is a Template error section. In you case, > as you can guess, django try to find a named url but get nothing. To know > why, we need to dive into the source and the traceback will be our guide. > > Starting with the end, the two last function, _reverse_with_prefix and > reverse are internal to django routing. I let them alone. > Next one live in defaulttags and cause issue at a call to reverse. I > believe that it's the url template tag. I'm mainly curious about the > current_app argument in reverse. I know that url name can take the form > "app:name". In your case, that would be > "user_management:password_reset_confirm". > The current_app argument come from the context property of the tag object > [1]. > When looking at the traceback, two things stand out for the few followings > lines. They all live in the template module and they all have a context > argument. So I skip them. > Next stop is send_mail in contrib/auth/forms.py. We get out of the > template module but we still have the context argument, which disappear in > the following line. Look like a good place to find the value of context. > Oops, look like I was off by one. send_mail take the context argument from > save, same file. The call to send_mail taking 4 lines, the context argument > have been stripped from the line in the traceback. But the context is > defined in the save method [2]. > You will notice it's a simple dict without a request key. But if you have > looked at how the URL tag define the current_app, you'll notice it make use > of the request key of the context. > > That's the root of your problem. Email are generated without a request. > And without a request, you need to specify the full name of url, as you > don't have access to the current_app. By the way, current_app is matching > app_name you specify in your URL.py file. That's why I asked the full > urls.py the first time. > > I hope I'm clear and that will help you :) > All you need to remember is that sometimes, you need to specify the full > name of an url. > > [1] https://github.com/django/django/blob/1.10.5/django/ > template/defaulttags.py#L428-L434 > [2] https://github.com/django/django/blob/1.10.5/django/ > contrib/auth/forms.py#L278-L286 > > 2017-04-10 7:09 GMT+02:00 sarfaraz ahmed <[email protected]>: > >> Hello Friends, >> >> I have attempted to make CustomUser model in django to signin using email. >> >> I am using password_reset view when I am getting this error. I checked >> password_reset view and found i am getting error during this line >> >> form.save(**opts) >> >> in password_reset >> >> ------------------------------------------------------------ >> ------------------------------------------------------------ >> ---------------------------------------------------------------- >> URL.py >> ------------------------------------------------------------ >> -------------------------------- >> from django.conf.urls import url,include >> >> from django.conf.urls import url >> from django.conf.urls import include >> >> >> from . import views >> from views import * >> >> >> from django.contrib.auth import views as auth_views >> from django.contrib.auth.views import password_reset,password_reset_done >> >> >> app_name ="user_management" >> >> urlpatterns = [ >> url(r'^login/',login,name='login'), >> url(r'^auth_view/',auth_view, name='auth_view'), >> url(r'^signup_success/',signup >> _success,name='signup_success'), >> url(r'^signup/',signup,name='signup'), >> url(r'^logout/',logout,name='logout'), >> url(r'^signup_confirm/(?P<acti >> vation_key>\w+)',signup_confirm,name='signup_confirm'), >> url(r'^account_info/',account_info,name='account_info'), >> url(r'^user_profile/',user_profile,name='user_profile'), >> url(r'^address/',address,name='address'), >> url(r'^change_password/',chang >> e_password,name='change_password'), >> url(r'^add_address/',add_address,name='add_address'), >> url(r'^edit_address/(?P<id>\d+ >> )',edit_address,name='edit_address'), >> url(r'^delete_address/(?P<id>\ >> d+)',delete_address,name='delete_address'), >> url(r'^change_password/',chang >> e_password,name='change_password'), >> url(r'^email_test/',email_test,name='email_test'), >> url(r'^password_reset/$', auth_views.password_reset,{'po >> st_reset_redirect':'/password_reset/done','template_name':' >> user_management/password_reset.html','email_template_ >> name':'user_management/password_reset_email.html'} , >> name='password_reset'), >> url(r'^password_reset/done/$', >> auth_views.password_reset_done, {'template_name':'user_managem >> ent/password_reset_done.html'},name='password_reset_done'), >> url(r'^reset/(?P<uidb64>[0-9A- >> Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', >> auth_views.password_reset_confirm,{'template_name':'user_ >> managment/password_reset_confirm.html'},name='password_reset_confirm'), >> url(r'^reset/done/$', auth_views.password_reset_complete, >> {'template_name':'user_management/password_reset_complete.html'}, >> name='password_reset_complete'), >> >> ] >> >> ------------------------------------------------------------ >> ------------------------------------------------------------ >> ----------------------- >> NoReverseMatch at /password_reset/ >> >> Reverse for 'password_reset_confirm' with arguments '()' and keyword >> arguments '{u'uidb64': 'Mg', u'token': u'4l3-29face0d2514fc5a70e4'}' not >> found. 0 pattern(s) tried: [] >> >> Request Method: POST >> Request URL: http://127.0.0.1:8000/password_reset/ >> Django Version: 1.10.5 >> Exception Type: NoReverseMatch >> Exception Value: >> >> Reverse for 'password_reset_confirm' with arguments '()' and keyword >> arguments '{u'uidb64': 'Mg', u'token': u'4l3-29face0d2514fc5a70e4'}' not >> found. 0 pattern(s) tried: [] >> >> Exception Location: C:\Python27\lib\site-packages\ >> django-1.10.5-py2.7.egg\django\urls\resolvers.py in >> _reverse_with_prefix, line 392 >> Python Executable: C:\Python27\python.exe >> Python Version: 2.7.9 >> Python Path: >> >> ['G:\\DJANGO_Project\\project1', >> 'C:\\Python27\\lib\\site-packages\\django_extensions-1.4.9-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\six-1.9.0-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\werkzeug-0.9.6-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\django_cron-0.3.5-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\django_common_helpers-0.6.3-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\south-1.0.2-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\django_crontab-0.6.0-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\django_kronos-0.6-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\python_crontab-1.9.1-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\django_chronograph-0.3.1-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\python_dateutil-1.5-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\crontab-0.20.2-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\django_chroniker-0.6.8-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\psutil-2.2.0-py2.7-win32.egg', >> 'C:\\Python27\\lib\\site-packages\\celery-3.1.17-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\kombu-3.0.24-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\billiard-3.3.0.19-py2.7-win32.egg', >> 'C:\\Python27\\lib\\site-packages\\pytz-2014.10-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\amqp-1.4.6-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\anyjson-0.3.3-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\django_celery-3.1.16-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\django_kombu-0.9.4-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\django_windows_tools-0.1.1-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\elasticsearch-1.3.0-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\urllib3-1.10.1-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\beautifulsoup-3.2.1-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\xmlutils-1.1-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\pillow-2.9.0-py2.7-win32.egg', >> 'C:\\Python27\\lib\\site-packages\\requests-2.7.0-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\openpyxl-2.3.4-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\et_xmlfile-1.0.1-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\jdcal-1.2-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\xlrd-0.9.4-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\webcolors-1.5-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\bpython-0.15-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\greenlet-0.4.9-py2.7-win32.egg', >> 'C:\\Python27\\lib\\site-packages\\curtsies-0.2.6-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\pygments-2.1.3-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\wcwidth-0.1.6-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\blessings-1.6-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\dnspython-1.14.0-py2.7.egg', >> 'C:\\Python27\\lib\\site-packages\\django-1.10.5-py2.7.egg', >> 'C:\\Windows\\system32\\python27.zip', >> 'C:\\Python27\\DLLs', >> 'C:\\Python27\\lib', >> 'C:\\Python27\\lib\\plat-win', >> 'C:\\Python27\\lib\\lib-tk', >> 'C:\\Python27', >> 'C:\\Python27\\lib\\site-packages', >> 'C:\\Python27\\lib\\site-packages\\win32', >> 'C:\\Python27\\lib\\site-packages\\win32\\lib', >> 'C:\\Python27\\lib\\site-packages\\Pythonwin'] >> >> Server time: Mon, 10 Apr 2017 05:02:00 +0000 >> Error during template rendering >> >> In template G:\DJANGO_Project\project1\user_management\templates\user_ >> management\password_reset_email.html, error at line *5* >> Reverse for 'password_reset_confirm' with arguments '()' and keyword >> arguments '{u'uidb64': 'Mg', u'token': u'4l3-29face0d2514fc5a70e4'}' not >> found. 0 pattern(s) tried: [] 1 {% autoescape off %} 2 To initiate the >> password reset process for your {{ user.get_username }} Arham Account, 3 >> click the link below: 4 5 {{ protocol }}://{{ domain }}{% url >> 'password_reset_confirm' uidb64=uid token=token %} 6 7 If clicking the >> link above doesn't work, please copy and paste the URL in a new browser 8 >> window instead. 9 10 Sincerely, 11 The Arham Collections 12 {% >> endautoescape %} >> ------------------------------------------------------------ >> ------------------------------------------------------------ >> -------------------------------- >> ------------------------------------------------------------ >> ------------------------------------------------------------ >> ----------------------------------- >> Trace back >> ------------------------------------------------------------ >> ------------------------------------------------------------ >> -------------------------------- >> Environment: >> >> >> Request Method: POST >> Request URL: http://127.0.0.1:8000/password_reset/ >> >> Django Version: 1.10.5 >> Python Version: 2.7.9 >> Installed Applications: >> ['django.contrib.admin', >> 'django.contrib.auth', >> 'django.contrib.contenttypes', >> 'django.contrib.sessions', >> 'django.contrib.messages', >> 'django.contrib.staticfiles', >> 'main_app', >> 'user_management', >> 'product_management'] >> Installed Middleware: >> ['django.middleware.security.SecurityMiddleware', >> 'django.contrib.sessions.middleware.SessionMiddleware', >> 'django.middleware.common.CommonMiddleware', >> 'django.middleware.csrf.CsrfViewMiddleware', >> 'django.contrib.auth.middleware.AuthenticationMiddleware', >> 'django.contrib.messages.middleware.MessageMiddleware', >> 'django.middleware.clickjacking.XFrameOptionsMiddleware'] >> >> >> Template error: >> In template G:\DJANGO_Project\project1\user_management\templates\user_ >> management\password_reset_email.html, error at line 5 >> Reverse for 'password_reset_confirm' with arguments '()' and keyword >> arguments '{u'uidb64': 'Mg', u'token': u'4l3-29face0d2514fc5a70e4'}' not >> found. 0 pattern(s) tried: [] 1 : {% autoescape off %} >> 2 : To initiate the password reset process for your {{ >> user.get_username }} Arham Account, >> 3 : click the link below: >> 4 : >> 5 : {{ protocol }}://{{ domain }} {% url 'password_reset_confirm' >> uidb64=uid token=token %} >> 6 : >> 7 : If clicking the link above doesn't work, please copy and paste the >> URL in a new browser >> 8 : window instead. >> 9 : >> 10 : Sincerely, >> 11 : The Arham Collections >> 12 : {% endautoescape %} >> >> Traceback: >> >> File "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\ >> django\core\handlers\exception.py" in inner >> 39. response = get_response(request) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\core\handlers\base.py" >> in _get_response >> 187. response = self.process_exception_by_middleware(e, >> request) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\core\handlers\base.py" >> in _get_response >> 185. response = wrapped_callback(request, >> *callback_args, **callback_kwargs) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\contrib\auth\views.py" >> in inner >> 47. return func(*args, **kwargs) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\utils\decorators.py" >> in _wrapped_view >> 149. response = view_func(request, *args, **kwargs) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\contrib\auth\views.py" >> in password_reset >> 212. form.save(**opts) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\contrib\auth\forms.py" >> in save >> 291. user.email, html_email_template_name=html_ >> email_template_name, >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\contrib\auth\forms.py" >> in send_mail >> 240. body = loader.render_to_string(email_template_name, >> context) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\template\loader.py" >> in render_to_string >> 68. return template.render(context, request) >> >> File "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\ >> django\template\backends\django.py" in render >> 66. return self.template.render(context) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\template\base.py" >> in render >> 208. return self._render(context) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\template\base.py" >> in _render >> 199. return self.nodelist.render(context) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\template\base.py" >> in render >> 994. bit = node.render_annotated(context) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\template\base.py" >> in render_annotated >> 961. return self.render(context) >> >> File "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\ >> django\template\defaulttags.py" in render >> 39. output = self.nodelist.render(context) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\template\base.py" >> in render >> 994. bit = node.render_annotated(context) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\template\base.py" >> in render_annotated >> 961. return self.render(context) >> >> File "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\ >> django\template\defaulttags.py" in render >> 439. url = reverse(view_name, args=args, kwargs=kwargs, >> current_app=current_app) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\urls\base.py" >> in reverse >> 91. return force_text(iri_to_uri(resolver._reverse_with_prefix(view, >> prefix, *args, **kwargs))) >> >> File >> "C:\Python27\lib\site-packages\django-1.10.5-py2.7.egg\django\urls\resolvers.py" >> in _reverse_with_prefix >> 392. (lookup_view_s, args, kwargs, len(patterns), patterns) >> >> Exception Type: NoReverseMatch at /password_reset/ >> Exception Value: Reverse for 'password_reset_confirm' with arguments '()' >> and keyword arguments '{u'uidb64': 'Mg', u'token': >> u'4l3-29face0d2514fc5a70e4'}' not found. 0 pattern(s) tried: [] >> ------------------------------------------------- >> I hope this information is enough >> -- >> Thanks with regards, >> Sarfaraz Ahmed >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at https://groups.google.com/group/django-users. >> To view this discussion on the web visit https://groups.google.com/d/ms >> gid/django-users/CAEPJdiwPcS1pSef2m6h%2BpGecvHfVJAEf-wXGmmvT >> 0BPGpKbBBA%40mail.gmail.com >> <https://groups.google.com/d/msgid/django-users/CAEPJdiwPcS1pSef2m6h%2BpGecvHfVJAEf-wXGmmvT0BPGpKbBBA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > > Cordialement, Ludovic Coues > +33 6 14 87 43 42 > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/django-users. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/django-users/CAEuG%2BTZKxo%3DXFOjt2Cfh%2BHemN9K3QFpNLJ8Q7viggJuJ_ > v4LQw%40mail.gmail.com > <https://groups.google.com/d/msgid/django-users/CAEuG%2BTZKxo%3DXFOjt2Cfh%2BHemN9K3QFpNLJ8Q7viggJuJ_v4LQw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Thanks with regards, Sarfaraz Ahmed -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAEPJdiw3qMBSx0cYOGDfPBsZQLm40gebr1VxyA9t3xGyZdnXbg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

