我使用通用视图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