'str'对象在password_reset,第185行中无法调用/django/contrib/auth/views.py

Ev.*_*Ev. 1 python django

我正在尝试自定义PasswordResetForm形式django.contrib.auth.views.password_reset.我从Django的网站或一个GitHub复制代码,并将其放在我的forms.py中.我更改了代码:

forms.py

email = forms.EmailField(label=_("Email"), max_length=254)
Run Code Online (Sandbox Code Playgroud)

email = forms.EmailField(label=_("Email"), max_length=254, widget=forms.EmailInput(attrs={'placeholder': 'E-mail'}))
Run Code Online (Sandbox Code Playgroud)

并保持其余PasswordResetForm代码完好无损.

url.py

url(r'^password/reset/$','django.contrib.auth.views.password_reset', {'post_reset_redirect': '/password/reset/done/', 'password_reset_form': 'forms.PasswordResetForm',}, name="password_reset"),
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Exception Location: /Library/Python/2.7/site-packages/Django-1.8.3-py2.7.egg/django/contrib/auth/views.py in password_reset, line 185

185. form = password_reset_form() 
Run Code Online (Sandbox Code Playgroud)

我没有这个定制工作.我需要定制,因为我想PlaceHolder在现场.如果我删除网址中的密钥,它的工作原理.

Ala*_*air 6

值的值password_reset_form应该是实际的表单类,而不是表单的字符串路径.例如,如果您使用导入表单

from forms import PasswordResetForm
Run Code Online (Sandbox Code Playgroud)

然后你会做:

url(r'^password/reset/$', 'django.contrib.auth.views.password_reset', {'post_reset_redirect': '/password/reset/done/', 'password_reset_form': PasswordResetForm}, name="password_reset"),
Run Code Online (Sandbox Code Playgroud)

顺便说一下,django.contrib.auth.views.password_reset在Django 1.8中不推荐使用字符串视图,并且将停止在Django 1.10中工作.相反,您可以导入身份验证视图,

from django.contrib.auth import views as auth_views
Run Code Online (Sandbox Code Playgroud)

并将网址格式更改为

url(r'^password/reset/$', auth_views.password_reset, {'post_reset_redirect': '/password/reset/done/', 'password_reset_form': PasswordResetForm}, name="password_reset"),
Run Code Online (Sandbox Code Playgroud)