Python Django在密码重置时收到意外的关键字参数uidb36

Python Django在密码重置时收到意外的关键字参数uidb36,python,django,django-authentication,django-registration,Python,Django,Django Authentication,Django Registration,我在django web应用程序上单击密码重置链接时出错。以前有人问过这个问题,这里给出了解决方案- 在我的例子中,我已经将其设置为base64编码(请参见下面的myurls.py),但我仍然收到此错误消息 错误 回溯 Traceback: File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 112. re

我在django web应用程序上单击密码重置链接时出错。以前有人问过这个问题,这里给出了解决方案-

在我的例子中,我已经将其设置为base64编码(请参见下面的myurls.py),但我仍然收到此错误消息

错误

回溯

Traceback:
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  112.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/django/views/decorators/debug.py" in sensitive_post_parameters_wrapper
  75.             return view(request, *args, **kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  52.         response = view_func(request, *args, **kwargs)

Exception Type: TypeError at /accounts/password/reset/confirm/Mg-3ve-2379945fbf21a5bfbe8c/
Exception Value: password_reset_confirm() got an unexpected keyword argument 'uidb36'
在myurl.py中

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

这是我的完整URL.py

from django.conf.urls import patterns, include, url, include
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.auth import views as auth_views

#Use for UNIQUE EMAIL
from registration.backends.default.views import RegistrationView
from registration.forms import RegistrationFormUniqueEmail

from django.contrib import admin
admin.autodiscover()

class RegistrationViewUniqueEmail(RegistrationView):
    form_class = RegistrationFormUniqueEmail


urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', 'Notes.views.home', name='home'),
    url(r'^profile/edit_profile', 'profiles.views.edit_profile', name='edit_profile'),
    url(r'^profile/(?P<slug>.*)/$', 'profiles.views.profile', name='profile'),             
    url(r'^password/change/$',
                    auth_views.password_change,
                    name='password_change'),
    url(r'^password/change/done/$',
                    auth_views.password_change_done,
                    name='password_change_done'),
    url(r'^password/reset/$',
                    auth_views.password_reset,
                    name='password_reset'),
    url(r'^password/reset/done/$',
                    auth_views.password_reset_done,
                    name='password_reset_done'),
    url(r'^password/reset/complete/$',
                    auth_views.password_reset_complete,
                    name='password_reset_complete'),
    url(r'^password/reset/confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
                    auth_views.password_reset_confirm,
                    name='password_reset_confirm'),
    url(r'^register', RegistrationViewUniqueEmail.as_view(),
                    name='registration_form'),
    url(r'^notes/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<slug>.*)/$',
        'Notes.views.note_detail',
        name = "note_detail" ),
    (r'^accounts/', include('registration.backends.default.urls')),
    url(r'^search/', 'Notes.views.search', name='search'),

)

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
从django.conf.url导入模式,包括,url,包括
从django.conf导入设置
从django.conf.url.static导入静态
从django.contrib.auth导入视图作为auth_视图
#用于唯一的电子邮件
从registration.backends.default.views导入注册视图
从registration.forms导入RegistrationFormUniqueEmail
从django.contrib导入管理
admin.autodiscover()
类注册视图UniqueEmail(注册视图):
form_class=注册FormUniqueMail
urlpatterns=模式(“”,
url(r“^admin/”,包括(admin.site.url)),
url(r'^$','Notes.views.home',name='home'),
url(r“^profile/edit\u profile”、“profiles.views.edit\u profile”、name='edit\u profile'),
url(r'^profile/(?P.*)/$,'profiles.views.profile',name='profile'),
url(r“^password/change/$”,
auth_views.password_change,
name='password\u change'),
url(r“^password/change/done/$”,
auth_views.password_change_done,
name='password\u change\u done'),
url(r“^password/reset/$”,
auth_views.password_reset,
name='password_reset'),
url(r“^password/reset/done/$”,
auth_views.password_reset_done,
name='password\u reset\u done'),
url(r“^password/reset/complete/$”,
验证视图。密码重置完成,
name='password\u reset\u complete',
url(r'^password/reset/confirm/(?P[0-9A-Za-z]+)-(?P.+)/$”,
验证视图。密码重置确认,
name='password\u reset\u confirm'),
url(r'^register',RegistrationViewUniqueMail.as_view(),
姓名=‘登记表’,
url(r'^notes/(?P[0-9]{4})/(?P[0-9]{2})/(?P.*)/$”,
“注释.视图.注释详细信息”,
name=“注_详情”),
(r“^accounts/”,包括('registration.backends.default.url'),
url(r“^search/”,“Notes.views.search”,name='search'),
)
如果设置为.DEBUG:
urlpatterns+=静态(settings.static\u URL,document\u root=settings.static\u root)
urlpatterns+=静态(settings.MEDIA\u URL,document\u root=settings.MEDIA\u root)

如果您使用的是Django 1.6或更高版本,则由于Django 1.6中更改了密码重置,因此您使用的代码是错误的

请看这里

您必须相应地更改密码重置电子邮件的模板

您还必须相应地更改URL

你现在有

url(r'^password/reset/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm',
 {'post_reset_redirect' : '/accounts/password/done/'}),
url(r'^password/reset/(?P[0-9A-Za-z]+)-(?P.+)/$,“django.contrib.auth.views.password\u reset\u confirm”,
{'post_reset_redirect':'/accounts/password/done/'}),
应该是这样的

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

您是否绝对确定检查的代码正确?您的错误和您的url模式不匹配。我肯定正在使用此url.py覆盖django注册提供的url。注册/auth_url.py。我在下面给出了我的完整URL.py。
url(r'^password/reset/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm',
 {'post_reset_redirect' : '/accounts/password/done/'}),
url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
    'django.contrib.auth.views.password_reset_confirm',
    name='password_reset_confirm'),