千家信息网

django中form表单组建使用及CBV模式的示例分析

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要为大家展示了"django中form表单组建使用及CBV模式的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"django中form表单
千家信息网最后更新 2025年01月20日django中form表单组建使用及CBV模式的示例分析

这篇文章主要为大家展示了"django中form表单组建使用及CBV模式的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"django中form表单组建使用及CBV模式的示例分析"这篇文章吧。

一、FBV和CBVFBV:是视图函数以函数的方式写逻辑代码CBV:是视图以类的方式写逻辑代码如CBV: views.pyfrom django.shortcuts import render,HttpResponse,redirectfrom django.views import Viewfrom django.views.decorators.csrf import csrf_exempt,csrf_protectfrom django.utils.decorators import method_decoratorfrom app01 import modelsclass 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.pydef 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 Formfrom django.forms import fieldsfrom 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属性

以上是"django中form表单组建使用及CBV模式的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0