2011-04-06 2 views
1

암호를 재설정 할 때 satchmo 저장소에서 html 형식의 메일을 보내야한다고 클라이언트에서 요청했습니다.satchmo password_reset html 형식 메일

실제로 satchmo 또는 django의 contrib.auth.views.password_reset은 원시 전자 메일 만 보냅니다.

html 형식의 메일을 보내려면 어떻게 수정해야합니까?

감사합니다.

답변

5

저는 Satchmo를 사용하지 않았지만 시작해야합니다.

먼저 PasswordResetForm의 하위 클래스를 만들고 save 메서드를 재정 의하여 일반 텍스트 전자 메일 대신 HTML 전자 메일을 보냅니다.

from django.contrib.auth.forms import PasswordResetForm 

class HTMLPasswordResetForm(PasswordResetForm): 
    def save(self, domain_override=None, email_template_name='registration/password_reset_email.html', 
      use_https=False, token_generator=default_token_generator, from_email=None, request=None): 
     """ 
     Generates a one-use only link for resetting password and sends to the user 
     """ 
     # Left as an exercise to the reader 

안내서로는 existing PasswordResetForm을 사용할 수 있습니다. 마지막에 send_mail 호출을 html 이메일을 전송하는 코드로 대체해야합니다. docs about sending html emails 도움이 될 것입니다.

양식을 작성한 후에는 password_reset의 URL 패턴에 양식을 포함시켜야합니다. 내가 말했듯이 Satchmo에 대한 경험은 없지만 소스 코드를 보면 password_reset_dict를 변경하여 satchmo_store.accounts.urls을 업데이트하려고한다고 생각합니다.

# You need to import your form, or define it in this module 
from myapp.forms import HTMLPasswordResetForm 

#Dictionary for authentication views 
password_reset_dict = { 
    'template_name': 'registration/password_reset_form.html', 
    # You might want the change the email template to .html 
    'email_template_name': 'registration/password_reset.txt', 
    'password_reset_form': HTMLPasswordResetForm, 
} 

# the "from email" in password reset is problematic... it is hard coded as None 
urlpatterns += patterns('django.contrib.auth.views', 
    (r'^password_reset/$', 'password_reset', password_reset_dict, 'auth_password_reset'), 
    ...