• 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>
    

    自定义

  • 相关阅读:
    类的加载
    java经典面试题(转)
    I/O NIO 2
    【转】Impala和Hive的关系
    【转】工作站和服务器的区别
    JAVA之线程
    【转】Linux中vim的粘贴复制快捷键的使用
    【转】Zookeeper集群为什么要是单数
    【转】Impala常见错误
    hadoop命令工作常用
  • 原文地址:https://www.cnblogs.com/dbf-/p/10961244.html
Copyright © 2020-2023  润新知