Python Django模型表单未过帐

Python Django模型表单未过帐,python,django,django-forms,Python,Django,Django Forms,我在forms.py中有一个基于ModelForm的表单。我最初得到的是空白表单,但是当填写表单并点击提交< /代码>时什么也没有发生。我不确定我会错在哪里 views.py def add_customer(request): # print(customer_form) # print(customer_form.errors) print(request.method) print(request.POST) customer_form = Cust

我在forms.py中有一个基于ModelForm的表单。我最初得到的是空白表单,但是当填写表单并点击<代码>提交< /代码>时什么也没有发生。我不确定我会错在哪里

views.py

def add_customer(request):
    # print(customer_form)
    # print(customer_form.errors)
    print(request.method)
    print(request.POST)
    customer_form = CustomerForm(request.POST or None)
    if customer_form.is_valid() and request.method == 'POST':
        form = CustomerForm(request.POST)
        form.save()
        return redirect('AdminPortal:customers')
        print('posted')
    else:
        print('failing')
        context = {'customer_form': customer_form,}
        return render(request, 'add_customer.html', context=context)
url.py

    path("customers/", views.customers, name="customers"),
    path("customers/customer/<int:id>/", views.customer, name="customer"),
    path("add_customer/", views.add_customer, name="add_customer"),
添加_customer.py[表单部分]

    <form method="post" action='AdminPortal:add_customer'>
        {% csrf_token %}
        {{ customer_form }}
        <button type="button" value="submit">Submit</button>
        <button type="button" value="cancel">Cancel</button>

    </form>

{%csrf_令牌%}
{{customer_form}}
提交
取消

表单似乎不知道在哪里发布

您需要将其转换为django
url
template标记。所以我会为你的表格做一些类似的事情

<form method="post" action='{% url "AdminPortal:add_customer" %}'>
    {% csrf_token %}

    {% if form.non_field_errors %}
        {{ form.non_field_errors }}
    {% endif %}

    {% for hidden in form.hidden_fields %}
        {{ hidden }}
    {% endfor %}

    {% for field in form.visible_fields %}
        <div class="fieldWrapper">
            {{ field.errors }}
            {{ field.label_tag }} {{ field }}
            {% if field.help_text %}
                <p class="help">{{ field.help_text|safe }}</p>
            {% endif %}
        </div>
    {% endfor %}

    <button type="button" value="submit">Submit</button>
    <button type="button" value="cancel">Cancel</button>
</form>

看起来表单不知道在哪里发布

您需要将其转换为django
url
template标记。所以我会为你的表格做一些类似的事情

<form method="post" action='{% url "AdminPortal:add_customer" %}'>
    {% csrf_token %}

    {% if form.non_field_errors %}
        {{ form.non_field_errors }}
    {% endif %}

    {% for hidden in form.hidden_fields %}
        {{ hidden }}
    {% endfor %}

    {% for field in form.visible_fields %}
        <div class="fieldWrapper">
            {{ field.errors }}
            {{ field.label_tag }} {{ field }}
            {% if field.help_text %}
                <p class="help">{{ field.help_text|safe }}</p>
            {% endif %}
        </div>
    {% endfor %}

    <button type="button" value="submit">Submit</button>
    <button type="button" value="cancel">Cancel</button>
</form>

我在HTML模板中发现了错误。 我有:

提交
取消
一旦更新至:

        <input type="submit" value="submit">Submit</input>
        <input type="submit" value="cancel">Cancel</input>
提交
取消

表单按预期正确发布。

我在HTML模板中发现了错误。 我有:

提交
取消
一旦更新至:

        <input type="submit" value="submit">Submit</input>
        <input type="submit" value="cancel">Cancel</input>
提交
取消

表单按预期正确发布。

{{form.errors}
没有给我任何信息。这就像
Submit
没有“命中任何地方”。这在以前是可行的,但我正在我的模型上实现
get\u absolute\u url
属性,这会产生问题吗?当使用它时,是否有一种特定的方法来处理ModelForms?
{{{form.errors}}
没有给我任何信息。这就像
Submit
没有“命中任何地方”。这在以前是可行的,但我正在我的模型上实现
get\u absolute\u url
属性,这会产生问题吗?使用该工具时是否有处理模型表单的特定方法?再次感谢!但是,单击submit按钮时,没有骰子仍然存在。在我使用
get_absolute\u url
之前,这确实有效,所以我不确定这是否导致我需要更新。同样的过程也适用于不同类型的modelForm,我还没有用
get\u absolute\u url
更新它。@AlliDeacon不应该在模型上使用这种方法。如果您查看页面源代码,您应该能够确认django将正确的路径呈现为表单操作,如果是,您的视图是否输出了任何打印?或者在服务器或浏览器控制台的输出中是否有任何东西可以提供提交时发生的情况的线索?是的,在页面源代码中:
我的视图中有打印语句,但它们没有进入代码的该部分。当我最初点击页面时,控制台显示
[17/Sep/2020 11:41:32]“GET/add_customer/HTTP/1.1”200 12615
,但是一旦我点击了submit,它就不会更新。你是正确的,一旦我将该方法添加到我正在操作的第二个记录类型中,创建和删除都会继续工作。我要重建,看看我做错了什么。谢谢你的帮助!所以我很不好意思承认这一点,但我的HTML有一个
,而不是
,再次感谢!但是,单击submit按钮时,没有骰子仍然存在。在我使用
get_absolute\u url
之前,这确实有效,所以我不确定这是否导致我需要更新。同样的过程也适用于不同类型的modelForm,我还没有用
get\u absolute\u url
更新它。@AlliDeacon不应该在模型上使用这种方法。如果您查看页面源代码,您应该能够确认django将正确的路径呈现为表单操作,如果是,您的视图是否输出了任何打印?或者在服务器或浏览器控制台的输出中是否有任何东西可以提供提交时发生的情况的线索?是的,在页面源代码中:
我的视图中有打印语句,但它们没有进入代码的该部分。当我最初点击页面时,控制台显示
[17/Sep/2020 11:41:32]“GET/add_customer/HTTP/1.1”200 12615
,但是一旦我点击了submit,它就不会更新。你是正确的,一旦我将该方法添加到我正在操作的第二个记录类型中,创建和删除都会继续工作。我要重建,看看我做错了什么。谢谢你的帮助!所以我很不好意思承认这一点,但我的HTML有一个
而不是