我使用通用視圖django.contrib.auth.views.password_reset爲密碼重置窗體。原則上,除了發送的電子郵件的主題行包含'example.com',如:「在example.com上重置密碼」之外,它都可以工作。Django:密碼重置電子郵件主題行包含'example.com
所以我環顧四周,但對於我的生活,我無法找到我如何改變這個來包含我的實際域名。
任何想法?
我使用通用視圖django.contrib.auth.views.password_reset爲密碼重置窗體。原則上,除了發送的電子郵件的主題行包含'example.com',如:「在example.com上重置密碼」之外,它都可以工作。Django:密碼重置電子郵件主題行包含'example.com
所以我環顧四周,但對於我的生活,我無法找到我如何改變這個來包含我的實際域名。
任何想法?
的PasswordResetForm
將根據您的contrib.sites
的電子郵件。它得到的域名使用和registration/password_reset_email.html
的Django /後備箱把它傳遞給HTML模板/ Django的/的contrib/auth /中forms.py:
...
4 from django.contrib.sites.models import get_current_site
...
123 def save(self, domain_override=None, email_template_name='registration/password_reset_email.html',
124 use_https=False, token_generator=default_token_generator, from_email=None, request=None):
125 """
126 Generates a one-use only link for resetting password and sends to the user
127 """
128 from django.core.mail import send_mail
129 for user in self.users_cache:
130 if not domain_override:
131 current_site = get_current_site(request)
132 site_name = current_site.name
133 domain = current_site.domain
134 else:
135 site_name = domain = domain_override
136 t = loader.get_template(email_template_name)
137 c = {
138 'email': user.email,
139 'domain': domain,
140 'site_name': site_name,
141 'uid': int_to_base36(user.id),
142 'user': user,
143 'token': token_generator.make_token(user),
144 'protocol': use_https and 'https' or 'http',
145 }
146 send_mail(_("Password reset on %s") % site_name,
147 t.render(Context(c)), from_email, [user.email])
使用管理員或Django的殼來改變在site
閱讀更多關於站點框架here
。
的Django如何使用站點框架
雖然它不要求你 使用站點框架,但是強烈 鼓勵,因爲Django的發生在幾個地方 它的優勢。即使 如果你的Django安裝 只有一個單一的網站上電,你 應採取兩秒鐘創建 與您的域名和 名,並指向其ID站點對象在 SITE_ID設置。在您的settings.py
>>> from django.contrib.sites.models import Site >>> my_site = Site(domain='some_domain.com', name='Some Domain') >>> my_site.save() >>> print my_site.id 2 >>>
:在你的settings.py
SITE_ID = 2
或
>>> my_site = Site.objects.get(pk=1) >>> my_site.domain = 'somedomain.com' >>> my_site.name = 'Some Domain' >>> my_site.save()
:
殼您可以通過做到這一點
SITE_ID = 1
假設你有管理網站去「網站」組,並將第一個更改爲您的域?
無論是那個還是在settings.py中都有。
http://docs.djangoproject.com/en/dev/topics/settings/#the-basics
我就檢查並找出你
編輯:
我相當肯定這就是我做了什麼,使之爲我工作。
謝謝你的徹底答案! – jbrendel 2011-04-29 04:59:56
你也可以通過管理員來做到這一點。點擊網站,然後編輯那裏的「example.com」,然後Django將發送帶有這些設置的密碼重置電子郵件。 – 2012-08-29 15:35:19