Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.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 Django表单提交-意外行为_Python_Django_With Statement - Fatal编程技术网

Python Django表单提交-意外行为

Python Django表单提交-意外行为,python,django,with-statement,Python,Django,With Statement,我在Django的一个网页上有一个表单,该表单当前显示特定项目的预算信息。预算和项目都是数据库中的模型 每个项目可以有多个预算,但这些预算中只有一个是“当前预算” 信息的显示方式是有许多称为“演示”的“平铺”图标(每个预算一个)。选择其中一个“演示”互动程序后,互动程序下方会显示一个表单,供用户填写有关该演示的信息(备注、与会者、日期等)。列表中最后一个“互动程序”图标始终是一个空白互动程序,标题为“添加演示文稿”,用户可以单击该图标为项目添加新演示文稿,并且它将在现有互动程序下显示表单的空白副

我在Django的一个网页上有一个表单,该表单当前显示特定项目的预算信息。预算和项目都是数据库中的模型

每个项目可以有多个预算,但这些预算中只有一个是“当前预算”

信息的显示方式是有许多称为“演示”的“平铺”图标(每个预算一个)。选择其中一个“演示”互动程序后,互动程序下方会显示一个表单,供用户填写有关该演示的信息(备注、与会者、日期等)。列表中最后一个“互动程序”图标始终是一个空白互动程序,标题为“添加演示文稿”,用户可以单击该图标为项目添加新演示文稿,并且它将在现有互动程序下显示表单的空白副本

表单包括两个用于上载图像的字段(图像将通过上载到的预算对象与特定项目关联)

填写表单并将图像文件添加到表单后,用户应单击表单底部的“提交”按钮将所有内容上载到数据库。然后,当返回此页面时,他们应能够单击该特定演示文稿的“平铺”图标,并且应显示表单,并自动弹出他们已经输入了以前输入的信息,以及他们上传的附加图像文件

这项工作目前正如期进行,然而,由于某些原因,当点击表单底部的“上传”按钮,将表单中输入的图像和其他信息上传到项目预算中时,似乎又在网页上添加了两个空白的“演示”贴片……我真的不明白为什么会发生这种情况

此表单的HTML为:

<form method="POST" enctype="multipart/form-data" data-vat-status="{{project.vat_status}}" data-view-url="{% url 'projects:concept_save_ajax_2' project.id %}" class="autosave_form formset full-width" action="{% url 'projects:upload_budget_pdfs' project.id %}">
    {% csrf_token %}
    <div id="presentations" class="app-wrap center-apps middle">
        {% with get|apps:'Budgets' as costing_app %}
            {% for presentation in presentations %}
                <div id="presentation-{{presentation.id}}" class="app sm {% if presentation.current_marker %}{{costing_app.color}}{% else %}{{app.color}}{% endif %}">
                    <a href="" class="filler"></a>
                    <a class="show-presentation bottom-right" name="presentation-{{presentation.id}}"><img class="icon" src="{% static 'img/edit-white.png' %}"></a>

                    <ul class="flush">
                        <li class=""><h2 class="p-t-lg">Presentation {{forloop.counter}}</h2></li>
                        <li>{{presentation.presentation_date|date:"d M y"|xor}}</li>
                        <li>{{presentation.details|xor|truncatechars:50}}</li>
                        {% if presentation.current_marker %}<li>({% if project.deposit_received%}Deposit{% else %}Current{% endif %} budget)</li>{% endif %}
                    </ul>
                </div>

            {% if forloop.last %}
            {% endif %}

            {% endfor %}
                {# Add a new presentation #}
            <div id="presentation-new" class="app sm {{costing_app.color}} outline">
                <a id="new_presentation" data-view-url="{% url 'projects:save_new_presentation' project.id %}" class="filler show-presentation" name="presentation-new"></a>
                <a name="presentation-new"></a>
                <span class="big-head">+</span>
                <h2 class="no-m">Add presentation</h2></li>
            </div>
        {% endwith %}
    </div>

    <div class="middle">
        {{presentation_formset.management_form}}
        {{drawing_formset.management_form}}

        <div class="col-9 centered-block p-t-lg">
            <table class="left fixed text-sm slim">
        {# New presentation without budget #}
                <tbody>

                </tbody>




        {# Edit presentation details #}
                {% for presentation_form in presentation_formset %}
                    <tbody id="pres{{forloop.counter}}" class="presentation-form" name="presentation-{{presentation_form.instance.id|xor:'new'}}" style="display: none;">


                        {% if not forloop.last and presentation_form.instance.budget_items.count %}
                            <tr class="split-rows">
                                <td colspan="3">Exc VAT {% if not presentation_form.instance.current_marker %}{{presentation_form.instance.grand_total_exc_vat|money:'£'}}{% else %}{{project.budget_overview.updated_exc_vat|money:'£'}}{% endif %}</td>
                                <td colspan="3">Inc VAT {% if not presentation_form.instance.current_marker %}{{presentation_form.instance.grand_total_inc_vat|money:'£'}}{% else %}{{project.budget_overview.updated_inc_vat|money:'£'}}{% endif %}</td>
                            </tr>
                        {% endif %}
                            <tr>
                                {% for hidden in presentation_form.hidden_fields %}
                                    <td class="hidden">{{ hidden }}</td>
                                {% endfor %}
                            </tr>
                            {% for field in presentation_form.visible_fields %}
                                <tr class="split-rows">
                                    {% if not field.name == 'pdf_package_dep' %}
                                        <td colspan="6"><label>{{field.label}}</label></td>
                                    {% endif %}
                                </tr>

                                <tr class="split-rows">

                                    <td colspan="6">
                                        {% if not field.name == 'pdf_package_dep' %}
                                            {% if field.name == 'presentation_date' %}
                                                {% with presentation_form.instance.meeting as meeting %}
                                                    {% include "projects/includes/meeting_bit.html" with employee=request.user.employee meeting=meeting UID=presentation_form.instance.id %}
                                                {% endwith %}
                                                {# <a class="ical_trigger button" data-view-url="{% url 'events:add_to_cal' %}" {% if not field.value %}style="display:none"{% endif %}>Add to calendar</a> #}
                                            {% else %}
                                                {{field}}
                                            {% endif %}
                                        {% endif %}
                                    </td>
                                </tr>
                            {% endfor %}

                            {% if presentation_form.instance.id %}

                                {# PDF uploads #}
                                {% with drawing_form=drawing_formset|getval:forloop.counter0  %}
                                    {# budget_pdf_form=budget_pdf_formset|getval:forloop.counter0 #}
                                    <tr>
                                        {% if not forloop.last %}
                                            <td colspan="3"><label>Budget PDF package</label></td>
                                        {% endif %}

                                        <td colspan="3"><label>Drawings</label></td>
                                    </tr>

                                    <tr>
                                        {% if not forloop.last %}
                                            <td colspan="3" class="center">
                                                {% if presentation_form.instance.pdf_package_dep %}
                                                    <a class="button file-download pdf" href="{% url 'costing:pdf_open' presentation_form.instance.id %}?pdf=package_dep" target="_blank"></a><a class="pdf-clear" data-view-url="{% url 'costing:pdf_clear' presentation_form.instance.id %}?pdf=package_dep"><img class="icon m-l-sm m-b-md" src="{% static "img/bin.png" %}"></a>
                                                {% else %}
                                                    {{presentation_form.pdf_package_dep}}
                                                {% endif %}
                                            </td>       
                                        {% endif %}
                                        {% for d_field in drawing_form.visible_fields %}
                                            {% if drawing_form.instance.pdf %}
                                                <td colspan="3" class="center">
                                                    <a class="button file-download pdf" href="{% url 'costing:pdf_open' presentation_form.instance.id %}?pdf=drawings" target="_blank"></a><a class="pdf-clear" data-view-url="{% url 'costing:pdf_clear' presentation_form.instance.id %}?pdf=drawings"><img class="icon m-l-sm m-b-md" src="{% static "img/bin.png" %}"></a>
                                                    <!--ERF(27/01/2017 @ 1135) Need a hidden field to actually hold the file that's uploaded to the form -->
                                                    <input type="hidden" name = "conceptDrawing" value="{{d_field.title}}">
                                                    <!--ERF(27/01/2017) Need to include the formset in the template -->
                                                    {#{ drawing_formset.as_table }#}
                                                    {{drawing_form.as_table}} 
                                                    {{ drawing_formset.management_form }}
                                                </td>       
                                            {% else %}
                                                <td colspan="3">{{d_field}}</td>
                                                {% for d_hidden in drawing_form.hidden_fields %}
                                                    <td class="hidden">{{d_hidden}}</td>
                                                {% endfor %}
                                            {% endif %}
                                        {% endfor %}
                                        <tr>
                                            <td colspan="1" class="p-t-md"></td>
                                            <td colspan="4" class="p-t-md"><input type="submit" value="upload"></td>
                                            <td colspan="1" class="p-t-md"></td>
                                        </tr>
                                    </tr>
                                {% endwith %}
                            {% endif %}


                        <tr>
                            <td colspan="3">

                                <a class="button email_trigger m-t-md" style="width:auto;" data-view-url="{% url 'comms:open_email_template' project.id %}?template=6&budget={{presentation_form.instance.id}}">Email client meeting report</a>
                            </td>
                        </tr>


                        <tr>
                            <td class="p-t-md">
                                <a {% if forloop.last %}id="refresh_presentations"{% endif %}class="update_presentation button fill">Done</a>
                            </td>
                            <td colspan="2">
                                {% if presentation_form.instance.id and not presentation_form.instance.budget_items.count %}
                                    <a class="button fill" href="{% url 'costing:delete_presentation' presentation_form.instance.id %}">Delete</a>
                                {% endif %}
                            </td>
                        </tr>
                    </tbody>

                {% endfor %}
            </table>
        </div>
    </div>
</form>
只有在提交表单时,如果表单附带了“PDF包”(即使用第一个“上载图像”按钮将图像添加到表单中),空白的“演示”互动程序才会添加到页面中…如果表单提交时没有附加“PDF包”,则不会将其添加到页面中-无论是否附加了“绘图”PDF(即使用第二个“上载图像”按钮添加到表单中的图像)

用于将“PDF包”和“图纸”的图像上载到表单的HTML部分为:

{% with drawing_form=drawing_formset|getval:forloop.counter0  %}
    {# budget_pdf_form=budget_pdf_formset|getval:forloop.counter0 #}
    <tr>
        {% if not forloop.last %}
            <td colspan="3"><label>Budget PDF package</label></td>
        {% endif %}

        <td colspan="3"><label>Drawings</label></td>
    </tr>

    <tr>
        {% if not forloop.last %}
            <td colspan="3" class="center">
                {% if presentation_form.instance.pdf_package_dep %}
                    <a class="button file-download pdf" href="{% url 'costing:pdf_open' presentation_form.instance.id %}?pdf=package_dep" target="_blank"></a><a class="pdf-clear" data-view-url="{% url 'costing:pdf_clear' presentation_form.instance.id %}?pdf=package_dep"><img class="icon m-l-sm m-b-md" src="{% static "img/bin.png" %}"></a>
                {% else %}
                    {{presentation_form.pdf_package_dep}}
                {% endif %}
            </td>       
        {% endif %}
        {% for d_field in drawing_form.visible_fields %}
            {% if drawing_form.instance.pdf %}
                <td colspan="3" class="center">
                    <a class="button file-download pdf" href="{% url 'costing:pdf_open' presentation_form.instance.id %}?pdf=drawings" target="_blank"></a><a class="pdf-clear" data-view-url="{% url 'costing:pdf_clear' presentation_form.instance.id %}?pdf=drawings"><img class="icon m-l-sm m-b-md" src="{% static "img/bin.png" %}"></a>

                    <input type="hidden" name = "conceptDrawing" value="{{d_field.title}}">

                    {#{ drawing_formset.as_table }#}
                    {{drawing_form.as_table}} 
                    {{ drawing_formset.management_form }}
                </td>       
            {% else %}
                <td colspan="3">{{d_field}}</td>
                {% for d_hidden in drawing_form.hidden_fields %}
                    <td class="hidden">{{d_hidden}}</td>
            {% endfor %}
            {% endif %}
        {% endfor %}
        <tr>
            <td colspan="1" class="p-t-md"></td>
            <td colspan="4" class="p-t-md"><input type="submit" value="upload"></td>
            <td colspan="1" class="p-t-md"></td>
        </tr>
    </tr>
{% endwith %}

作为HTML这一部分顶部的
{%with…%}
语句的一部分?但我不知道如何将
与两个不同的参数同时使用…?这可能吗?

您可以进行一些测试。尝试修改您的表单集..使用1个额外表单和0个额外表单,看看会发生什么

{% with drawing_form=drawing_formset|getval:forloop.counter0  %}
    {# budget_pdf_form=budget_pdf_formset|getval:forloop.counter0 #}
    <tr>
        {% if not forloop.last %}
            <td colspan="3"><label>Budget PDF package</label></td>
        {% endif %}

        <td colspan="3"><label>Drawings</label></td>
    </tr>

    <tr>
        {% if not forloop.last %}
            <td colspan="3" class="center">
                {% if presentation_form.instance.pdf_package_dep %}
                    <a class="button file-download pdf" href="{% url 'costing:pdf_open' presentation_form.instance.id %}?pdf=package_dep" target="_blank"></a><a class="pdf-clear" data-view-url="{% url 'costing:pdf_clear' presentation_form.instance.id %}?pdf=package_dep"><img class="icon m-l-sm m-b-md" src="{% static "img/bin.png" %}"></a>
                {% else %}
                    {{presentation_form.pdf_package_dep}}
                {% endif %}
            </td>       
        {% endif %}
        {% for d_field in drawing_form.visible_fields %}
            {% if drawing_form.instance.pdf %}
                <td colspan="3" class="center">
                    <a class="button file-download pdf" href="{% url 'costing:pdf_open' presentation_form.instance.id %}?pdf=drawings" target="_blank"></a><a class="pdf-clear" data-view-url="{% url 'costing:pdf_clear' presentation_form.instance.id %}?pdf=drawings"><img class="icon m-l-sm m-b-md" src="{% static "img/bin.png" %}"></a>

                    <input type="hidden" name = "conceptDrawing" value="{{d_field.title}}">

                    {#{ drawing_formset.as_table }#}
                    {{drawing_form.as_table}} 
                    {{ drawing_formset.management_form }}
                </td>       
            {% else %}
                <td colspan="3">{{d_field}}</td>
                {% for d_hidden in drawing_form.hidden_fields %}
                    <td class="hidden">{{d_hidden}}</td>
            {% endfor %}
            {% endif %}
        {% endfor %}
        <tr>
            <td colspan="1" class="p-t-md"></td>
            <td colspan="4" class="p-t-md"><input type="submit" value="upload"></td>
            <td colspan="1" class="p-t-md"></td>
        </tr>
    </tr>
{% endwith %}
{# budget_pdf_form=budget_pdf_formset|getval:forloop.counter0 #}