如何在Django模板中使用两个表单,以及如何在提交表单时调用不同的函数
我在一个模板中使用两个表单。当我提交第二份表格时,我有点困惑,我在哪里错了,有人在这方面帮助我 index.html如何在Django模板中使用两个表单,以及如何在提交表单时调用不同的函数,django,django-templates,Django,Django Templates,我在一个模板中使用两个表单。当我提交第二份表格时,我有点困惑,我在哪里错了,有人在这方面帮助我 index.html <form action="#" method="post"> {% csrf_token %} <input type="text" name="username" id="username"> <a href="{% url 'app:profile' %}"><button type="submit"> Submit</
<form action="#" method="post">
{% csrf_token %}
<input type="text" name="username" id="username">
<a href="{% url 'app:profile' %}"><button type="submit"> Submit</button></a>
</form>
<form action="#" method="post">
{% csrf_token %}
<input type="text" name="review" id="review">
<a href="{% url 'app:feedback' %}"><button type="submit"> Submit</button></a>
</form>
url.py
app_name = 'app'
urlpatterns = [
path('profile/', views.profile, name="profile"),
path('feedback/', views.feedback, name="feedback"),
]
在提交中添加name属性
<form action="#" method="post">
<input type="text" name="username" id="username">
<a href="{% url 'app:profile' %}"><button type="submit" name="attr_name"> Submit</button></a>
</form>
我认为应该采取不同的行动,以确定哪个表单将向哪个视图发出post请求:
<form action="{% url 'app:profile' %}" method="post">
{% csrf_token %}
<input type="text" name="username" id="username">
<button type="submit"> Submit</button>
</form>
<form action="{% url 'app:feedback' %}" method="post">
{% csrf_token %}
<input type="text" name="review" id="review">
<button type="submit"> Submit</button>
</form>
{%csrf_令牌%}
提交
{%csrf_令牌%}
提交
第一个表单工作正常。我对第二个表单所做的是,当我单击“第二个表单提交”按钮时,它不会调用反馈函数。反馈函数不会被调用,因为您尚未在其中调用模板。而且,您不应该对这两个视图都使用index.html。如果要将两个表单合并到一个模板中,请合并视图。它会起作用的
def profile(request):
if request.method == 'POST' and 'attr_name' in request.POST:
# Some operation
<form action="{% url 'app:profile' %}" method="post">
{% csrf_token %}
<input type="text" name="username" id="username">
<button type="submit"> Submit</button>
</form>
<form action="{% url 'app:feedback' %}" method="post">
{% csrf_token %}
<input type="text" name="review" id="review">
<button type="submit"> Submit</button>
</form>