程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Django Form 的主要内置字段介绍

发布于2019-08-05 19:34     阅读(893)     评论(0)     点赞(1)     收藏(1)


修改 urls.py,添加

    path('field.html', views.field),

在 templates 下创建 field.html, 内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" action="/field.html" enctype="multipart/form-data">
    <div>f1: <label for="{{ obj.f1.id_for_label }}">{{ obj.f1.label }}</label>
    {{ obj.f1.label_tag }}
    {{ obj.f1 }}</div>
    <div>f3: {{ obj.f3 }}</div>
    <div>f4: {{ obj.f4 }}</div>
    <div>f5: {{ obj.f5 }}</div>
    <div>f6: {{ obj.f6 }}</div>
    <div>f7: {{ obj.f7 }}</div>
    <div>f8: {{ obj.f8 }}</div>
    <input type="submit" value="提交">
</form>
</body>
</html>

修改 views.py

from app01 import forms
def field(request):
    if request.method == 'GET':
        obj = forms.FieldForm()
        return render(request, 'field.html', {'obj': obj})
    elif request.method == 'POST':
        obj = forms.FieldForm(request.POST, request.FILES)
        obj.is_valid()
        print(obj.clean())
        print(obj.errors.as_json())
        return render(request, 'field.html', {'obj': obj})

修改 forms.py

from django.core.validators import RegexValidator

class FieldForm(DForms.Form):
    f1 = fields.CharField(
        max_length=6,               # 最大长度
        required=True,              # 是否允许为空
        initial='World',            # 初始值
        validators=[RegexValidator(r'^[0-9]+$', '请输入数字', code='e1'), RegexValidator(r'159[0-9]+$', '数字必须以159开头', code='e2')],                  # 自定义验证规则 
        error_messages={'required': 'Not null', 'invalid': 'wrong format', 'e1': 'input number', 'e2': 'begin with 159', 'max_length': 'too long'},    # 错误信息

        show_hidden_initial=True,   # 是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直)
        label='Hello',              # 用于生成Label标签或显示内容
        disabled=False,             # 是否可以编辑
        label_suffix=' -->',        # Label内容后缀
    )

    # f2 = fields.RegexField(r'159[0-9]+$')

    f3 = fields.FileField()

    f4 = fields.ChoiceField(
        initial=2,
        choices=[(1, '赵四'), (2, '刘能'), (3, '王舞')],
    )

    f5 = fields.TypedChoiceField(
        coerce=lambda x: int(x),    # 对选中的每一个值进行一次转换
        initial=2,
        choices=[(1, '赵四'), (2, '刘能'), (3, '王舞')],
    )

    f6 = fields.MultipleChoiceField(
        initial=[2, 3],
        choices=[(1, '赵四'), (2, '刘能'), (3, '王舞')],
    )

    f7 = fields.SplitDateTimeField()

    f8 = fields.FilePathField(
           path='app01',            # 文件夹路径
           recursive=True,          # 递归下面的文件夹
           allow_folders=True       # 允许文件夹
    )



所属网站分类: 技术文章 > 博客

作者:小白鼠

链接:https://www.pythonheidong.com/blog/article/7106/e4ac6824f2e5caffb39b/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)