在多个Django模板中渲染表单函数

时间:2020-03-03 11:29:19

标签: django django-forms django-templates

我编写了一个函数,该函数从表单捕获详细信息并在提交表单后发送电子邮件。我如何才能将此功能呈现给多个Django模板,在其中我可以调用该表单并执行此操作。 下面是相关的功能。

def emailView(request):
    if request.method == 'GET':
        form = myform()
    else:
        form = myform(request.POST)
        if form.is_valid():
            subject='form Details'
            mobile = form.cleaned_data['mobile']
            email = form.cleaned_data['email']
            dummy = '\nMobile: '+mobile+'\nEmail: '+email'
            try:
                send_mail(subject, dummy, 'dummy@gmail.com', ['dummy1@gmail.com', 'dummy2@gmail.com'])
                messages.success( request, " Thank you !! For contacting.')
            except BadHeaderError:
                return HttpResponse('Invalid header found.')
            return redirect('email')
    return render(request, "my_app/email.html", {'form': form})

1 个答案:

答案 0 :(得分:2)

您可以使用include标记来这样做。请尝试以下方式。

将以下内容作为您在urls.py中的网址

path('your_form/', views.emailView, name='myform'),

您可以使用以下标记调用函数的任意数量的模板。

#template1.html

<form method="post" action="{% url 'myform' %}">
{% include 'yourapp/email.html' %}
<button type="submit">Submit</button>

#template2.html

<form method="post" action="{% url 'myform' %}">
{% include 'yourapp/email.html' %}
<button type="submit">Submit</button>

相关问题