![](/img/trans.png)
[英]How to override help_text and label for password form in django
[英]get field label, help_text and value as context after form submission
我想根據用戶的回復向用戶發送電子郵件。 如何設置上下文,以便可以訪問模板中每個字段的標簽,help_text和值。
forms.py
class ResponseForm(ModelForm):
def __init__(self, *args, **kwargs):
user = kwargs.pop('user', None)
super(ResponseForm, self).__init__(*args, **kwargs)
if user:
for key, value in question_answer_dict.items():
self.fields[key].help_text = getattr(user, key + '-HelpForThisUser')
class Meta:
model = ResponseModel
exclude = ('author', 'submit_count')
views.py
@login_required
def ResponseFormView(request):
def mail():
subject = 'Thank you!'
email_from = settings.EMAIL_HOST_USER
recipient_list = [request.user.email, ]
html_message = render_to_string(
'mail_template.html', {'context': suitable_context})
plain_message = strip_tags(html_message)
send_mail(subject, plain_message, email_from,
recipient_list, html_message=html_message)
if request.method == "POST":
form = ResponseForm(request.POST)
if form.is_valid():
submission = form.save(commit=False)
submission.author = request.user
submission.save()
mail()
return render(request, 'thanks.html', {})
else:
form = ResponseForm(user=request.user)
return render(request, 'response_tem.html', {'form': form})
注意:每個用戶可能有不同的問題和不同的help_texts。
您可以在POST請求中獲取這些值,然后將它們傳遞給mail函數。
if form.is_valid():
field_value = form.cleaned_data.get('field_name', None)
if field_value:
field_label = form.fields.get('field_name').label
field_help_text = form.fields.get('field_name').help_text
mail(field_value, field_label, field_help_text)
您可以進一步將這些參數傳遞給上下文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.