Хорошо, я нашел рабочее решение для этого. Вот мое решение.
Я изменил forms.py
следующим образом
from django import forms
from accounts.tasks import send_mail
from django.contrib.auth.forms import PasswordResetForm as PasswordResetFormCore
class PasswordResetForm(PasswordResetFormCore):
email = forms.EmailField(max_length=254, widget=forms.TextInput(
attrs={
'class': 'form-control',
'id': 'email',
'placeholder': 'Email'
}
))
def send_mail(self, subject_template_name, email_template_name, context,
from_email, to_email, html_email_template_name=None):
context['user'] = context['user'].id
send_mail.delay(subject_template_name=subject_template_name,
email_template_name=email_template_name,
context=context, from_email=from_email, to_email=to_email,
html_email_template_name=html_email_template_name)
И измененный tasks.py
похож на следующий
from __future__ import absolute_import, unicode_literals
from accounts.models import User
from django.contrib.auth.forms import PasswordResetForm
@shared_task
def send_mail(subject_template_name, email_template_name, context,
from_email, to_email, html_email_template_name):
context['user'] = User.objects.get(pk=context['user'])
PasswordResetForm.send_mail(
None,
subject_template_name,
email_template_name,
context,
from_email,
to_email,
html_email_template_name
)
Нет, Вы не должны использовать этот метод. Однако я думаю, что это - вероятно, лучший метод для выбора, потому что это делает контроллер более тестируемым и менее веб-осведомленным. Альтернатива должна была бы установить заголовок вручную в Контроллере, как это:
Ответ. AddHeader ("истекает", "четверг, 01 декабря 1994 16:00:00 GMT");
Ну, средства управления атрибутом OutputCache, когда выполнения действия вообще, и когда это возвращается, кэшировали HTML вместо этого. Истекает говорит браузер, когда повторно выбрать HTML. Таким образом, я не назвал бы их взаимоисключающими, но они - конечно, две стороны той же монеты, и Вы правы думать, что Вам, возможно, не понадобятся оба. Я предложил бы рассмотреть спецификацию HTTP для решения то, что наиболее подходит для приложения.