老师你好,关于表单有一些疑问

来源:5-1 表单的介绍和一个简单表单的使用方法

秋荏苒

2019-12-06

老师你好
Django 表单似乎没有 type="submit" 这种 widget,只能自己通过 attrs 手动设置,但是问题是如果直接将表单实例在前端渲染,它又会自动渲染出每个字段的 <label> 标签,那么对于按钮,我们根本不需要 <label> 标签,我想问下老师是否可以手动渲染表单字段,也就是,我想要哪里就渲染哪里,就像 WTForms 那样逐个 field 逐个 label 的渲染,或者说有什么办法实现一个 SubmitField 的吗?

下面是我跟着老师写的表单类,以及 HTML 代码

from django import forms


class RegisterForm(forms.Form):
    username = forms.CharField(label="用户名", max_length=18, required=True)
    password = forms.CharField(
        label="密码",
        widget=forms.TextInput(attrs={'class': 'test-class', 'id': 'testID', 'type': 'password'})
    )
    submit = forms.CharField(widget=forms.TextInput(attrs={'type': 'submit'}))
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>Django 表单示例</h1>
<form action="{% url 'register' %}" method="POST">
    {% csrf_token %}
    {{ form.as_table }}
</form>
</body>
</html>
写回答

1回答

deweizhang

2019-12-06

有一种自定义的方案 我指的前端。你在后端定义好form后,并不需要渲染到前端,而是自己直接写html 只需要你前端form里的name与type保持后端一致即可。这样就可以做到前端自定义开发表单代码,后端的表单只是做验证即可,错误可以通过render渲染回去

0
4
deweizhang
回复
秋荏苒
django中他自己的admin和form出镜率都不高~
2019-12-06
共4条回复

Django入门到进阶-适合Python小白的系统课程

入门Django的同时,让你形成更贴近实际工作的Python Web开发知识体系

1114 学习 · 464 问题

查看课程