Django Form

Posted doubtful

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django Form相关的知识,希望对你有一定的参考价值。

Django Form

借助 Django 的 Form 可以很容易的完成:

  • 生成 html 标签
  • 验证用户数据(显示错误信息)
  • HTML Form 提交后保留上次提交数据
  • 初始化页面显示内容

Form 类

- Form 类中包含字段,字段用于用户请求验证。

Django 内置字段

Django form 内置字段 <--点我

- 字段中封装了插件,插件用于自动生成 HTML。

Django 内置插件
TextInput(Input)
NumberInput(TextInput)
EmailInput(TextInput)
URLInput(TextInput)
PasswordInput(TextInput)
HiddenInput(TextInput)
Textarea(Widget)
DateInput(DateTimeBaseInput)
DateTimeInput(DateTimeBaseInput)
TimeInput(DateTimeBaseInput)
CheckboxInput
Select
NullBooleanSelect
SelectMultiple
Radioselect
CheckboxSelectMultiple
FileInput
ClearableFileInput
MultipleHiddenInput
SplitDateTimeWidget
SplitHiddenDateTimeWidget
SelectDateWidget

常用选择插件:

# 单radio,值为字符串
location = fields.CharField(
    initial=2,
    widget=widgets.RadioSelect(choices=((1,\'Beijing\'),(2,\'Shanghai\'),))
)

# 单radio,值为字符串
location = fields.ChoiceField(
    choices=((1, \'Beijing\'), (2, \'Shanghai\'),),
    initial=2,
    widget=widgets.RadioSelect
)

# 单select,值为字符串
location = fields.CharField(
    initial=2,
    widget=widgets.Select(choices=((1,\'Beijing\'),(2,\'Shanghai\'),))
)

# 单select,值为字符串
location = fields.ChoiceField(
    choices=((1, \'Beijing\'), (2, \'Shanghai\'),),
    initial=2,
    widget=widgets.Select
)

# 多选select,值为列表
location = fields.MultipleChoiceField(
    choices=((1,\'Beijing\'),(2,\'Shanghai\'),),
    initial=[1,],
    widget=widgets.SelectMultiple
)

# 单checkbox
location = fields.CharField(
    widget=widgets.CheckboxInput()
)

# 多选checkbox,值为列表
location = fields.MultipleChoiceField(
    initial=[2, ],
    choices=((1, \'Beijing\'), (2, \'Shanghai\'),),
    widget=widgets.CheckboxSelectMultiple
)

初始化数据

初始化只需在实例化 Form 类时,将包含数据的字典传入。
示例:
form:

from django import forms
from django.forms import widgets, fields


class CustomForm(forms.Form):
    name = fields.CharField(
        max_length=20,
        error_messages={\'request\': \'用户名不能为空\'},
        label=\'Username:\',
    )
    location = fields.ChoiceField(
        choices=((1, \'Beijing\'), (2, \'Shanghai\')),
        label=\'location\',
    )

views:

from django.shortcuts import render


def form(request):
    if request.method == \'GET\':
        dict = {
            \'name\': \'user\',
            \'location\': 1,
        }
        obj = CustomForm(dict)
        return render(request, \'form.html\', {\'obj\': obj})

HTML:

<form action="/form.html" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <p>{{ obj.user }} {{ obj.errors.user.0 }}</p>
    <p>{{ obj.location }}</p>
 
    <input type="submit" value="submit"/>
</form>

自定义

以上是关于Django Form的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django Summernote 中显示编程片段的代码块?

django—Form组件

SpringBoot中表单提交报错“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“(代码片段

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

Django 框架篇: Django中的Form 组件