django form表单组建使用及CBV模式

一、FBV和CBV
FBV:是视图函数以函数的方式写逻辑代码
CBV:是视图以类的方式写逻辑代码

如CBV: views.py
from django.shortcuts import render,HttpResponse,redirect
from django.views import View
from django.views.decorators.csrf import csrf_exempt,csrf_protect
from django.utils.decorators import method_decorator
from app01 import models

class LoginView(View):
    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return super(LoginView, self).dispatch(request,*args,**kwargs)

    def get(self, request, *args, **kwargs):
        return render(request, ‘login.html‘)

    def post(self,request, *args, **kwargs):
        user = request.POST.get(‘user‘)
        pwd = request.POST.get(‘pwd‘)
        obj = models.UserInfo.objects.filter(username=user,password=pwd).first()
        if obj:
            request.session[‘user_info‘] = {‘id‘: obj.id, ‘username‘: obj.username}
            return redirect(‘/users.html‘)
        return render(request, ‘login.html‘, {‘msg‘: ‘去你的‘})
        
如FBV: views.py
def register(request):
    if request.method == "GET":
        form = RegisterForm()
        return render(request, ‘register.html‘, {‘form‘: form})
    else:
        response = {‘status‘: True, ‘data‘: None, ‘msg‘: None}
        form = RegisterForm(request.POST)
        if form.is_valid():
            print(form.cleaned_data)
        else:
            response[‘status‘] = False
            response[‘msg‘] = form.errors
        return HttpResponse(json.dumps(response))
        

二、form表单组建使用

 导入forms模块
from django.forms import Form
from django.forms import fields
from django.forms import widgets

#创建表单类
class UserForm(Form):
    username = fields.CharField(
        required=True,
        error_messages={‘required‘: ‘用户名不能为空‘},
        widget = widgets.TextInput(attrs={‘class‘: ‘form-control‘})
    )
    password = fields.CharField(
        required=True,
        error_messages={‘required‘: ‘邮箱不能为空‘, ‘invalid‘: ‘邮箱格式错误‘},
        widget = widgets.TextInput(attrs={‘class‘: ‘form-control‘})
    )

    ut_id = fields.ChoiceField(
        choices = [],
        widget = widgets.Select(attrs={‘class‘: ‘form-control‘})
    )

    role_id = fields.MultipleChoiceField(
        choices=[],
        widget=widgets.SelectMultiple(attrs={‘class‘: ‘form-control‘})
    )

    def __init__(self, *args, **kwargs):
        super(UserForm,self).__init__(*args,**kwargs)
        self.fields[‘ut_id‘].choices = models.UserType.objects.values_list(‘id‘,‘title‘)
        self.fields[‘role_id‘].choices = models.Role.objects.values_list(‘id‘,‘caption‘)

注: username, password,渲染到页面是input标签属性的name值
fields.CharField表示输入文本类型,
fields.ChoiceField表示单选下拉框
fields.MultipleChoiceField表示多选下拉框
required=True表示必填选项
error_messages={‘required‘: ‘用户名不能为空‘}表示错误提示
widget = widgets.TextInput(attrs={‘class‘: ‘form-control‘})表示增加class属性
时间: 2024-09-30 16:16:55

django form表单组建使用及CBV模式的相关文章

Django Form表单

Django  Form 表单 在实际的生产环境中比如登录和验证的时候,我们一般都使用Jquery+ajax来判断用户的输入是否为空,假如JS被禁用的话,咱们这个认证屏障是不是就消失了呢?(虽然一般不会禁用掉但是还是存在风险) 所以我们一般做两种认证一种是前端做一遍认证,在后端做一遍认证. 首先咱们看一下下面的案例: from django.shortcuts import render # Create your views here. def user_list(request): host

css form 表单组

2014年7月1日 15:31:17 第一次写css,见谅 css: 1 /*form*/ 2 /*default*/ 3 .form-box .form-group .form-label {text-align: right; width: 200px; height: 33px; line-height: 33px;} 4 .form-box .form-group .form-input {text-align: left; width: 200px; height: 33px; dis

通过html()的方法获取文本内容, form表单组件显示的值与获取到的值不一致的问题

我在通过 html()获取对应节点的内容,发现一个问题,获取到的 form表单组件的内容值是初始加载的值,而不是经过用户修改后的值.例如页面加载时组件<input type="text" value="111111"/>,用户更改表单的值为 222222,通过父节点的html()方法获取这个组件,预期应该是<input type="text" value="222222"/>,可结果却是初始时的样子&l

Django form表单的数据加载问题

今天在项目中遇到一个问题,有个django增删改查的模板页面,其中的编辑页面使用自定的form来构建的显示内容. 表单的数据时从数据库中查询出来展示的,当修改数据库的内容后,form的展示的信息并没有修改.当重启后,form的数据重新加载. 查了许多资料,都没有对form表单数据的加载时间的解答. 从现象来看,form的数据的加载时在服务启动时,就加载了.代码如下: view.py def testform(req):     form = testForms.testForm()     pr

Python自动化运维系列之Django Form表单验证

Form表单验证 Django核心功能组件之一,虽然也可以在前端使用JS对表单验证, 但是Django中已经为我们准备好的Form功能还算是很强大的,有时候比较适合运维,为我们简化了很多前端开发工作. Django最主要的几个功能有4个     ·  生成HTML标签     ·  验证数据(表单错误信息提示)     ·  HTML 表单保留上次提交数据     ·  初始化页面表单内容 Django的Form内容还是挺多的,我们可以从一个简单的登陆验证例子来看看Form的基本功能使用 1)新

Django Form 表单(上)

我们已经知道了在Django里面如何从前端向后台发送数据的基本操作.( http://beanxyz.blog.51cto.com/5570417/1944978 )在之前的例子里面,我们的HTML模板里面的form表单都是手动创建的,对于提交的数据类型格式也需要自己写正则表达式进行确认.(例如AJAX的例子http://beanxyz.blog.51cto.com/5570417/1951021  ) 如果表单很多的话,手动处理这些东西会很费时间.Django提供了一个form的功能,可以根据

Django Form表单基础

平时我们写表单要自己写样式,比如我们要写一个注册样式,有如下填写项: 实现代码如下: views.py文件 #!/usr/bin/env python #-*-conding:utf-8:-*- from django.shortcuts import render from django import forms # Create your views here. def user_list(request):     host = request.POST.get('host')     p

6月28日 Django form表单

Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确.如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.. Django form组件就实现了上面所述的功能. 总结一下,其实form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 普通的登录 views.p

python django Form表单

Django 拥有自己独立的表单功能块,可以完成: 1.表单的定义 2.表单的校验 3.表单的前端样式 等功能,方便我们开发,那么接下来,我们看一下表单的定义 首先我们确定我们要编写的功能,一个提供给博客的访客发送自己的联系方式的功能.并且搭建相对应的数据库 1 from django.db import models 2 3 class Connection(models.Model): 4 con_name = models.CharField(max_length = 32,verbose