Django: пароль reset тема темы темы содержит 'example.com

Я использую общий вид django.contrib.auth.views.password_reset для формы пароля reset. В принципе, все работает, за исключением того, что строка темы отправленного сообщения содержит "example.com", как в: "Пароль reset на example.com".

Итак, я огляделся, но для жизни меня не могу узнать, как я могу изменить это, чтобы содержать мое фактическое имя домена.

Любые идеи?

Ответ 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

Ответ 2

Предполагая, что у вас есть админ-сайт, перейдите в группу "sites" и измените первую в своем домене?

Либо это, либо что-то в settings.py. http://docs.djangoproject.com/en/dev/topics/settings/#the-basics

Я просто проверю и узнаю для вас

EDIT:

Я достаточно уверен, что я сделал, чтобы заставить его работать для меня.