Django-nonrel + problème Django-enregistrement: mot-clef argument inattendu 'uidb36' mot de passe lors de la réinitialisation

StackOverflow https://stackoverflow.com/questions/6323852

Était-ce utile?

La solution 2

Ma solution a été de commenter urlpatterns définis dans l'enregistrement \ auth_urls.py, et les redéfinir comme une copie de urlpatterns définies dans django.contrib.auth.

Voici mon auth_urls.py après le changement:

"""
URL patterns for the views included in ``django.contrib.auth``.

Including these URLs (via the ``include()`` directive) will set up the
following patterns based at whatever URL prefix they are included
under:

* User login at ``login/``.

* User logout at ``logout/``.

* The two-step password change at ``password/change/`` and
  ``password/change/done/``.

* The four-step password reset at ``password/reset/``,
  ``password/reset/confirm/``, ``password/reset/complete/`` and
  ``password/reset/done/``.

The default registration backend already has an ``include()`` for
these URLs, so under the default setup it is not necessary to manually
include these views. Other backends may or may not include them;
consult a specific backend's documentation for details.

"""

from django.conf.urls.defaults import *

#from django.contrib.auth import views as auth_views

from django.contrib.auth import urls as auth_urls

urlpatterns = auth_urls.urlpatterns

'''
Commented out, this is what caused my problems:

urlpatterns = patterns('',
                       url(r'^login/$',
                           auth_views.login,
                           {'template_name': 'registration/login.html'},
                           name='auth_login'),
                       url(r'^logout/$',
                           auth_views.logout,
                           {'template_name': 'registration/logout.html'},
                           name='auth_logout'),
                       url(r'^password/change/$',
                           auth_views.password_change,
                           name='auth_password_change'),
                       url(r'^password/change/done/$',
                           auth_views.password_change_done,
                           name='auth_password_change_done'),
                       url(r'^password/reset/$',
                           auth_views.password_reset,
                           name='auth_password_reset'),
                       url(r'^password/reset/confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$',
                           auth_views.password_reset_confirm,
                           name='auth_password_reset_confirm'),
                       url(r'^password/reset/complete/$',
                           auth_views.password_reset_complete,
                           name='auth_password_reset_complete'),
                       url(r'^password/reset/done/$',
                           auth_views.password_reset_done,
                           name='auth_password_reset_done'),
) 
'''

Autres conseils

Je viens d'avoir à changer l'argument uidb36 à uidb64, comme suit:

FROM:

url(r'^password/reset/confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$',

A:

url(r'^password/reset/confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',

Puis remet à zéro le mot de passe a commencé à travailler à nouveau.

Je suppose que votre url password_reset_confirm à urls.py ressemble quelque chose de similaire à

url (r '^ représente / password_reset / (P [0-9A-Za-z] {1,13}) - (P [0-9A-Za-z] {} 1,13 - [ 0-9A-Za-z] {} 1,20) / $ », password_reset_confirm, { 'Post_reset_redirect': '/ comptes / password_reset / complet /'}, name = "password_reset_confirm"),

et votre lien dans les regards password_reset_email.html comme {{Protocole}}: // {{domain}} {% url 'password_reset_confirm' uidb36 = uid = jeton jeton%}

Il suffit de changer uib36 à la fois uib64 les lieux, cela fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top