簡體   English   中英

如何從自定義Django視圖發送密碼重置郵件?

[英]How to send password reset mail from custom Django views?

我有自定義User模型的Django 2.0.2 其中一個功能是為匿名用戶提供創建訂單的方法,而無需在網站上“注冊優先”。

主要想法是:

  • 匿名用戶填寫訂單,輸入電子郵件地址,然后單擊Create Order ;
  • Django使用輸入的電子郵件和隨機生成的密碼創建User ;
  • 接下來,Django(或Celery)發送電子郵件鏈接重置密碼(如標准重置表格);
  • 用戶查看電子郵件並單擊重置鏈接,重新輸入自己的密碼。

這被兩個函數殺死了一個:用戶注冊並創建第一個訂單。

問題:如何從我的自定義視圖發送重置密碼郵件? 據我所知,鏈接會生成並發送PasswordResetView視圖,但如何在自定義視圖上調用它們?

要從視圖發送密碼重置鏈接,您可以填寫PasswordResetForm,這是PasswordResetView https://docs.djangoproject.com/en/2.0/topics/auth/default/#django.contrib.auth使用的密碼重置方式。 forms.PasswordResetForm

如另一個stackoverflow回答這里https://stackoverflow.com/a/30068895/9394660所述,表單可以像這樣填充:

from django.contrib.auth.forms import PasswordResetForm

form = PasswordResetForm({'email': user.email})

if form.is_valid():
    request = HttpRequest()
    request.META['SERVER_NAME'] = 'www.mydomain.com'
    request.META['SERVER_PORT'] = '443'
    form.save(
        request= request,
        use_https=True,
        from_email="username@gmail.com", 
        email_template_name='registration/password_reset_email.html')

注意:如果您不使用https,請將端口替換為80,並且不要包含use_https = True

根據情況,您可能已經有了請求,也不需要創建一個請求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM