簡體   English   中英

表單提交后獲取字段標簽,help_text和值作為上下文

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM