【问题标题】:How to assign form id to Django ModelForm?如何将表单 ID 分配给 Django ModelForm?
【发布时间】:2015-09-16 09:07:15
【问题描述】:

我正在使用 django-webtest 为我的应用程序创建自动化功能测试。

由于我在一个网页上有多个表单,我目前正在使用硬编码索引来选择感兴趣的表单。例如:

    # Forms on this page are: forms[0] = Establishment form,
    # forms[1]= School Form
    school_form = school_page.forms[1]
    school_form['phone'] = self.school_phone_number
    school_form.submit(value='Submit')

我想使用表单 id 而不是硬编码的索引来选择感兴趣的表单,以便代码可维护。但是当我在代码中打印 school_form.id 时,值为 None。

模板是:

<form action="" method="post" >
{% csrf_token %}
<p>
    {{ establishment_form|crispy }}
    <br><br>
    {{ school_form|crispy }}
</p>
<button type="submit" class="btn btn-lg btn-primary">Submit</button>

我在 Django 文档中找不到如何将表单 ID(不是表单字段 ID)分配给 ModelForm。有人可以帮我解决这个问题吗?

我正在使用 Django 1.7、django-webtest 1.7.8、WebTest 2.0.18 和 django-crispy-forms 1.4.0。

【问题讨论】:

    标签: django forms django-webtest


    【解决方案1】:

    Django 表单不负责输出表单元素本身。所以在表单声明级别没有什么可做的。

    您总是可以从视图中传递一个属性并在您的模板中使用它:

    <form id="{{ form_id_from_view }}" action="." method="POST">
    

    【讨论】:

    • 如何在这个模板中使用它和两个表单?在主编辑中添加了模板。
    • 我不太明白。您在该模板中只有一个表格;它包含来自两个 Django 表单的字段,但从 HTML 的角度来看,这无关紧要。
    • 谢谢。我现在明白了。我混淆了粒度单位——有两种 Django 表单,但在 HTML 页面上它们被合并为一个。我尝试了你的建议,现在可以了:-)
    【解决方案2】:

    您可以直接将id 分配给模板中的表单元素。

    <form id="my_id" name="some_name" action="/my/url/" method="POST">
    

    【讨论】:

    • 感谢拉胡尔的回复。我刚刚接受了丹尼尔的回答,因为它排在第一位。
    猜你喜欢
    • 2023-02-12
    • 2021-10-02
    • 2016-02-16
    • 2018-12-05
    • 1970-01-01
    • 2018-10-07
    • 2012-07-12
    • 2022-11-30
    • 2014-09-02
    相关资源
    最近更新 更多