社长大人,我用django自带的重置密码的视图函数,但是不知道怎么用自带的视图函数发送重置密码连接给邮箱

社长大人,新年好呀,又来打扰你了;

我之前发送邮件用的是send_mail()函数,在这里如果是想在这个password_reset函数中发送邮件,是要用到send_mail吗???这里贴一下我用的django自带的重置密码的视图函数:

还望社长指点一二啊,官方文档我没地方找啊。。。

url(r'^password-reset/$','django.contrib.auth.views.password_reset',
name='password_reset'),
url(r'^password-reset/done/$','django.contrib.auth.views.password_reset_done',
 name='password_reset_done'),
url(r'^password-reset/confirm/(?P<uidb64>[-\w]+)/(?P<token>[-\w]+)/$',
'django.contrib.auth.views.password_reset_confirm',
  name='password_reset_confirm'),
url(r'^password-reset/complete/$','django.contrib.auth.views.password_reset_complete',
name='password_reset_complete'),

以下是django自带的password_reset
@csrf_protect
def password_reset(request, is_admin_site=False,
                   template_name='registration/password_reset_form.html',
                   email_template_name='registration/password_reset_email.html',
                   subject_template_name='registration/password_reset_subject.txt',
                   password_reset_form=PasswordResetForm,
                   token_generator=default_token_generator,
                   post_reset_redirect=None,
                   from_email=None,
                   current_app=None,
                   extra_context=None,
                   html_email_template_name=None):
    if post_reset_redirect is None:
        post_reset_redirect = reverse('password_reset_done')
    else:
        post_reset_redirect = resolve_url(post_reset_redirect)
    if request.method == "POST":
        form = password_reset_form(request.POST)
        if form.is_valid():
            opts = {
                'use_https': request.is_secure(),
                'token_generator': token_generator,
                'from_email': from_email,
                'email_template_name': email_template_name,
                'subject_template_name': subject_template_name,
                'request': request,
                'html_email_template_name': html_email_template_name,
            }
            if is_admin_site:
                warnings.warn(
                    "The is_admin_site argument to "
                    "django.contrib.auth.views.password_reset() is deprecated "
                    "and will be removed in Django 1.10.",
                    RemovedInDjango110Warning, 3
                )
                opts = dict(opts, domain_override=request.get_host())
            form.save(**opts)
            return HttpResponseRedirect(post_reset_redirect)
    else:
        form = password_reset_form()
    context = {
        'form': form,
        'title': _('Password reset'),
    }
    if extra_context is not None:
        context.update(extra_context)

    if current_app is not None:
        request.current_app = current_app

    return TemplateResponse(request, template_name, context)
2017一月30号 18:42:43 采花大盗重新编辑了文章
涨见识0 涨水分0

** 文章讲述的内容可能你不赞同,不喜欢,但如果觉得观点新颖,内容独到,提高了你的知识面,帮你了解了你不懂的知识和知道了突发的新闻,这样的贴,希望能点涨见识,相反,到处转载,内容无聊,雷同,毫无建树,请点涨水分!

我要评论

提交评论
每个人都有自己的看法,登录以后马上发表。还没有账号?点击这里马上注册一个账号。

当前有9条评论

  • 繁花社长 :2017一月30号 20:42:08
    发邮件和重置密码是2回事啊。你先把这个用户的密码重置了,然后用发邮件的函数把新密码通过邮件发出去。
    我不明白你在问什么问题?
    0 0 回复 举报
    • 采花大盗 :2017一月30号 22:44:23
      对啊,我重置了密码之后,比如调用password_reset函数,但是这个重置的新密码在哪里?
      0 0 回复 举报
      • 采花大盗 :2017一月30号 22:45:57
        还有就是password_reset,password_reset_done,password_reset_confirm,password_reset_complete这几个函数有什么区别?实在没弄懂
        0 0 回复 举报
        • 繁花社长 :2017一月30号 23:18:30
          要不你先告诉我你是怎么理解的这个密码重置的功能。
          0 0 回复 举报
          • 采花大盗 :2017一月30号 23:44:54
            社长,我是这样想的哈:首先我在前端点密码重置功能,然后让我输入注册时的邮箱,点确认之后,我后台的password_reset视图函数应该去对照是不是合法的邮箱,如果合法,就发送密码给这个邮箱,不知道这样理解对不对;
            0 0 回复 举报
            • 采花大盗 :2017一月30号 23:46:07
              然后我的问题是如果是我那样理解的话,我在password_reset视图函数中都没有看见发送邮箱的指令,而且我设置的邮箱服务器也没有看到用在哪里?
              0 0 回复 举报
              • 繁花社长 :2017一月31号 01:30:17
                前端提交上来一个新的密码,你用password reset这个函数就能把对应的用户密码修改了。然后现在你就可以用发邮件的函数发邮件。发邮件这个功能是用了邮件的比如pop3这样的接口。
                0 0 回复 举报

需要登录以后才能进行刚才的操作

  • 刚才的操作,需要登录以后才能继续,如果已经有账号,请点击登录,登录以后,会自动返回到当前页面进行刚才的操作。如果还没有账号,请点击注册。