首页 > 其他分享 >二十三、Django之Form组件

二十三、Django之Form组件

时间:2024-02-11 23:56:24浏览次数:32  
标签:obj 二十三 Form models fields request Django user return

Django的Form:
1、对用户请求的验证
2、生成HTML代码

a、创建一个类
b、类中创建字段(包含正则表达式)
c、Get
   a) Obj = Fr()
      obj.user=> 自动生成HTML
d、POST
   a) Obj = Fr(request,POST)
      i. If obj.is_valid():
            Obj.cleaned_data
         Else:
            Obj.errors
           Return .....obj

1、Form的使用

from django.shortcuts import render, HttpResponse
from django import forms
from django.forms import fields
from django.forms import widgets

class TestForm(forms.Form):
    user=fields.CharField(
        required=True, #是否必填
        max_length=12, #最大长度
        min_length=3, #最小长度
        error_messages={
            'required':'用户名不能为空',
            'max_length':'太长了',
            'min_length':'太短了',
        }, #错误提示
        # widget=widgets.Select(), #定制HTML插件
        label='用户名',
        initial='xx',
        help_text='helptext',
        # show_hidden_initial=True,
        # validators=[], #自定制验证规则
        # disabled=False,
        label_suffix='->',
    )
    age=fields.IntegerField(
        label='年龄',
        max_value=12,
        min_value=5,
    )
    email=fields.EmailField(
        label='邮箱',
    )

    img=fields.ImageField()

    city=fields.ChoiceField(
        choices=[(1,'北京'),(2,'上海'),(3,'深圳')],
        initial=3, #默认值
    )

    city2=fields.CharField(
        widget=widgets.Select(choices=[(1,'北京'),(2,'上海'),(3,'深圳')])
    )

    city3 = fields.IntegerField(
        widget=widgets.Select(choices=[(1, '北京'), (2, '上海'), (3, '深圳')])
    )

    hobby=fields.MultipleChoiceField(
        choices=[(1,'跑'),(2,'跳'),(3,'游'),(4,'飞')],
        initial=[1,3,4],
    )

    anotherCity=fields.TypedChoiceField(
        coerce=lambda x:int(x), # 设置coerce函数,将输出的值转换成需要的类型
        choices=[(1, '北京'), (2, '上海'), (3, '深圳')],
        initial=3,  # 默认值
    )

    fp=fields.FilePathField(
        path='app01'
    )

def test(request):
    if request.method=='GET':
        obj=TestForm()
        return  render(request,'test.html',{'obj':obj})
    else:
        obj=TestForm(request.POST,request.FILES)
        obj.is_valid()
        print(obj.cleaned_data)
        return render(request,'test.html',{'obj':obj})
<body>
  <form action="/test/" method="post" novalidate enctype="multipart/form-data">
    <p>{{ obj.user.label }}{{ obj.user }}</p>
    <p>{{ obj.age.label }}{{ obj.age }}{{ obj.errors.age.0 }}</p>
    <p>{{ obj.email.label }}{{ obj.email }}</p>
    <p>{{ obj.img.label }}{{ obj.img }}</p>
    <p>{{ obj.city.label }}{{ obj.city }}</p>
    <p>{{ obj.city2.label }}{{ obj.city2 }}</p>
    <p>{{ obj.city3.label }}{{ obj.city3 }}</p>
    <p>{{ obj.hobby.label }}{{ obj.hobby }}</p>
    <p>{{ obj.anotherCity.label }}{{ obj.anotherCity }}</p>
    <p>{{ obj.fp.label }}{{ obj.fp }}</p>
    <input type="submit" value="提交">
  </form>
</body>

form元素的novalidate标识:取消浏览器对数据的验证,交由后台验证数据。
models.UserInfo.objects.create(fm_obj.cleaned_data)

标签:obj,二十三,Form,models,fields,request,Django,user,return
From: https://www.cnblogs.com/zhlforhe/p/18013632

相关文章

  • 二十四、Django Serializes
    SerializersDjango中,自定义类型的对象无法通过json序列化,可以使用serializers。defget_data(request):#由于UserInfo是自定义对象,不能通过json序列化#因此使用以下方式fromdjango.coreimportserializersret={'status':True,'data':None}try:......
  • 十八、Django之Http
    1、Django请求的生命周期请求响应Http1、发送Http请求请求头(包含Cookie)\r\n\r\n请求体2、服务器请求,根据请求头中的url在路由关系表中进行匹配(从上到下)3、匹配成功后,执行指定的views函数a.Url->函数==>FBVb.Url->类==>CBV4、响应内......
  • 十六、Django的ORM(二)
    1、DecimalFieldDecimalField保存浮点型数据比FloatField精确,因为它是以字符串来保存,而FloatField,数据越长,保存得越不精确。2、索引(命中索引)正确使用SQL语言,使查找数据时,用到索引username=models.CharField(...#db_index=True数据库中字段是否可以建立......
  • 十五、Django的ORM
    单表操作1、表记录的添加方式一:Book()+obj.save()b=Book(name="python基础",price=99,author="yuan",pub_date="2017-12-12")b.save()#将b存到数据库方式二:createBook.objects.create(name="linux",price=78,author="HK",pub_date="......
  • 十四、MySQL与Django之Model基础
    数据库Django默认支持sqlite、mysql、oracel、postgresql等数据库1、sqlitedjango默认使用sqlite数据库Django.db.backends.sqlite3DATABASES={'default':{'ENGINE':'django.db.backends.sqlite3','NAME':os.path.join(BA......
  • 十三、Django Admin
    DjangoAdmin是django项目数据库的一个后台管理工具一、注册models项目中,应用创建之后,应用文件夹就有一个admin.py文件。在admin.py中注册需要在admin后台管理的modelsfromdjango.contribimportadminfromwebimportmodelsadmin.site.register(models.Host)admin.site.......
  • 十二、Django视图函数和模版相关
    视图相关HTTPRequest对象:属性:path函数:get_full_path()HTTPResponse对象:render()render_to_response()locals():局部变量redirect()重定向例子:用户登录成功后跳转deflogin(request):...#判断登录成功后,跳转到indexreturnrender(request,"index.html"......
  • 十、Django静态文件
    django网络相应基础:1、配置url路由在urls.py中urlpatterns添加路径fromdjango.conf.urlsimporturlfromdjango.contribimportadminfromapp01importviewsurlpatterns=[url(r'^admin/',admin.site.urls),url(r'^index.html$',views.index),......
  • 十一、Django url控制系统
    urlpatterns=[url(正则表达式,views视图函数,参数,别名),]匹配1、完全匹配urlpatterns=[url(r'^admin/',admin.site.urls),url(r'^showtime/',views.showtime),url(r'^blog/',include('blog.urls')),url(r'^logi......
  • 九、Django环境搭建(基于anaconda环境)
    Django特点:具有完整的封装,开发者可以高效率的开发项目,Django将大部分的功能进行了封装,开发者只需要调用即可,如此,大大的缩短了开发的时间,同时也因为太多封装导致开发灵活度和项目的运行效率不足。通常在工作中,开发者可以使用Django快速的搭建项目,然后基于项目进行个别部分的效率优......