Version Phát triển
Chỉ cần tạo tệp mới registration/password_reset_subject.txt
trong thư mục mẫu của bạn. Điều này sẽ ghi đè django mặc định đối tượng
Xem https://github.com/django/django/blob/master/django/contrib/auth/templates/registration/password_reset_subject.txt
và https://github.com/django/django/blob/master/django/contrib/auth/forms.py dòng 150
Trong Django 1,3
nếu bạn sử dụng nội tâm chỉ cần thêm trong .po
tập tin
#: forms.py:143
#, python-format
msgid "Password reset on %s"
msgstr "YOUR SUBJECT HERE %s"
nếu không folow bước tiếp theo
trong rễ urls.py
# change to your custom view
(r'^password_reset/$', 'your_app.views.password_reset'),
trong your_app/views.py
from django.contrib.auth.views import password_reset as django_password_reset
from .forms import CustomPasswordResetForm
# reuse Django view, but change form
def password_reset(*args, **kwargs):
kwargs['password_reset_form'] = CustomPasswordResetForm
django_password_reset(*args, **kwargs):
viết lại của bạn tiết kiệm phương pháp trong your_app bạn/forms.py (Tôi biết nó không khô nhưng nên làm việc:)
class CustomPasswordResetForm(PasswordResetForm):
def save(self, domain_override=None, email_template_name='registration/password_reset_email.html',
use_https=False, token_generator=default_token_generator, request=None):
from django.core.mail import send_mail
for user in self.users_cache:
if not domain_override:
current_site = get_current_site(request)
site_name = current_site.name
domain = current_site.domain
else:
site_name = domain = domain_override
t = loader.get_template(email_template_name)
c = {
'email': user.email,
'domain': domain,
'site_name': site_name,
'uid': int_to_base36(user.id),
'user': user,
'token': token_generator.make_token(user),
'protocol': use_https and 'https' or 'http',
}
send_mail(_("YOUR SUBJECT HERE %s") % site_name,
t.render(Context(c)), None, [user.email])
Điều này có ý nghĩa, có bất kỳ điều gì tôi cần làm để ghi đè lên mặc định không? Tôi đã đặt password_reset_subject.txt trong cùng một/đăng ký/dir như phần còn lại của mẫu đặt lại mật khẩu nhưng vẫn sử dụng chủ đề mặc định. – GivP
Xin lỗi vì sự bất tiện, Giv tôi đã sai một chút. Đường dẫn phụ thuộc vào cài đặt TEMPLATE_DIRS.Nếu mẫu sẽ được đặt trong//auth/registration/nên hoạt động –
Cảm ơn Alexey nhưng tôi vẫn không thể thực hiện công việc này. Điều này làm việc với Django 1.3.0? Bởi vì tôi chỉ xem forms.py trong thư mục contrib và không đề cập đến password_reset_subject.txt - phương thức save() của lớp PasswordResetForm không chỉ định password_reset_subject.txt - chủ đề được mã hóa cứng. Bất kỳ ý tưởng làm thế nào tôi có thể ghi đè lên điều này? – GivP