Ответ 1
PasswordResetForm
отправляет электронное письмо на основе contrib.sites
. Он получает имя домена и передает его в шаблон html в registration/password_reset_email.html
Джанго/багажник/Джанго/вно/авт/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])
используйте admin или django shell для изменения site
Подробнее о структуре сайтов here
.
Как Django использует инфраструктуру сайтов
Хотя вам не требуется, чтобы вы используйте структуру сайтов, это сильно поощряется, потому что Django принимает преимущество этого в нескольких местах. Даже если ваша установка Django вы используете только один сайт, вы необходимо сделать две секунды для создания объект сайта с вашим доменом и имя и укажите его идентификатор в своем SITE_ID.
в оболочке вы можете сделать это, выполнив:
>>> 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()
в вашем settings.py:
SITE_ID = 1