Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在HTML模板中调用表单视图_Python_Html_Django - Fatal编程技术网

Python 如何在HTML模板中调用表单视图

Python 如何在HTML模板中调用表单视图,python,html,django,Python,Html,Django,我想制作一个HTML模板,其中我想制作三个表单A、B和C。 表单应默认加载,并有两个按钮打开表单B和C。表单应调用视图。A和抓取数据 现在点击按钮,表单B应该被加载并从视图中获取数据。B和C一样 我不知道这是否可能。 请提供帮助。从技术上讲,您可以使用一个视图和一个模板来呈现3个表单,然后使用一个操作url引用3个单独的视图,如下所示: def 3_forms_view(request): form_a = YourFormA(request.POST or None) form

我想制作一个HTML模板,其中我想制作三个表单A、B和C。 表单应默认加载,并有两个按钮打开表单B和C。表单应调用视图。A和抓取数据

现在点击按钮,表单B应该被加载并从视图中获取数据。B和C一样

我不知道这是否可能。
请提供帮助。

从技术上讲,您可以使用一个视图和一个模板来呈现3个表单,然后使用一个操作url引用3个单独的视图,如下所示:

def 3_forms_view(request):
    form_a = YourFormA(request.POST or None)
    form_b = YourFormB(request.POST or None)
    form_c = YourFormC(request.POST or None)
    context = {
        "form_a": form_a,
        "form_b": form_b,
        "form_c": form_c,
    }
    return render(request, '3_form_template.html', context)

def view_a(request):
    form_a = YourFormA(request.POST)
    if form_a.is_valid():
        #do something
        form_a.save()
        return HttpResponseRedirect('your_succsess_url')
    # in case the form is not valid call back the view 
    # which handle the 3 form display
    return 3_forms_view(request)

def view_b(request):
    form_b = YourFormB(request.POST)
    if form_b.is_valid():
        #do something
        form_b.save()
        return HttpResponseRedirect('your_succsess_url')
    # in case the form is not valid call back the view 
    # which handle the 3 form display
    return 3_forms_view(request)

#same thing for view c
3_表单_模板:


没有提到你的尝试。您应该提供您正在使用的代码,并解释哪些代码不起作用。请看一下StackOverflow提问的最佳实践:当表格B出现时,表格a是否应该消失?是的,当B呼叫a时,表格a应该消失。
def 3_forms_view(request):
    form_a = YourFormA(request.POST or None)
    form_b = YourFormB(request.POST or None)
    form_c = YourFormC(request.POST or None)
    context = {
        "form_a": form_a,
        "form_b": form_b,
        "form_c": form_c,
    }
    return render(request, '3_form_template.html', context)

def view_a(request):
    form_a = YourFormA(request.POST)
    if form_a.is_valid():
        #do something
        form_a.save()
        return HttpResponseRedirect('your_succsess_url')
    # in case the form is not valid call back the view 
    # which handle the 3 form display
    return 3_forms_view(request)

def view_b(request):
    form_b = YourFormB(request.POST)
    if form_b.is_valid():
        #do something
        form_b.save()
        return HttpResponseRedirect('your_succsess_url')
    # in case the form is not valid call back the view 
    # which handle the 3 form display
    return 3_forms_view(request)

#same thing for view c
<form action="{% url 'view_a_url_name' %}" method="post">
  {% csrf_token %}
  {{ form_a.as_p }}
  <button type="submit">Submit A</button>
</form>
<form action="{% url 'view_b_url_name' %}" method="post">
  {% csrf_token %}
  {{ form_b.as_p }}
  <button type="submit">Submit B</button>
</form>
<form action="{% url 'view_c_url_name' %}" method="post">
  {% csrf_token %}
  {{ form_c.as_p }}
  <button type="submit">Submit C</button>
</form>