【问题标题】:Proper use of PasswordResetForm in Django在 Django 中正确使用 PasswordResetForm
【发布时间】:2013-09-27 19:12:58
【问题描述】:

我正在尝试使用 django 假定的 PasswordResetForm 功能为我的 django 应用程序创建密码重置表单。

我在 forms.py

中创建了一个表单
class UserForgotPasswordForm(PasswordResetForm):
    email = forms.EmailField(required=True,max_length=254)
    class Meta:
        model = User
        fields = ("email")

我无法在 views.py 中设置 view 以使用此表单,我目前有:

def UserResetPassword(request):
    form = UserForgotPasswordForm(None, request.POST)
    if request.method == 'POST':
        if form.is_valid():
            email = request.POST.get('email', '')
            user = 

我的 urls.py

urlpatterns = patterns('',
    (r'^ForgotPassword/$',UserResetPassword),
)

我不知道如何进一步使用它,因为我发现的文档很少,而且通常不直接使用 PasswordResetForm django 功能。

有人可以帮忙吗?

谢谢。

【问题讨论】:

    标签: django authentication passwords password-recovery


    【解决方案1】:

    我相信您需要做的就是调用 form.save(),PasswordResetForm 将生成一个一次性使用链接并将其通过电子邮件发送给您的用户。它查找与表单中输入的电子邮件相匹配的用户。

    所以应该是这样的:

    def UserResetPassword(request):
        form = UserForgotPasswordForm(None, request.POST)
        if request.method == 'POST':
            if form.is_valid():
                form.save(from_email='blah@blah.com', email_template_name='path/to/your/email_template.html')
    

    如果您不指定电子邮件模板名称,django 将只使用the default one

    【讨论】:

    • email_template_name 会查看我配置的 /templates 目录吗?
    • 是的,您可能需要配置您的 URL,如果您遇到问题,请参阅 stackoverflow.com/questions/4790838/…
    • 所以,email_template_name = path/to-template/ ?
    • 类似form.save(from_email='blah@blah.com', email_template_name='registration/password_reset_email.html')。为你更新了答案。
    • from_email=from_email ,第二个 from_email 会从用户输入的 email 字段中获取,对吧?
    猜你喜欢
    • 2013-10-26
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2018-10-01
    • 1970-01-01
    相关资源
    最近更新 更多