zoukankan      html  css  js  c++  java
  • Django之ModelForm组件

    class ModelForm(forms.ModelForm):
        class Meta:
            model=models.UserInfo
            fields='__all__'#所有字段,列表,可以写成列表['username']
            exclude=['username']
            labels=None#提示消息
            help_texts=None#帮助信息
            widgets=None#自定义插件
            error_messages=None#错误信息
            field_classes=None#自定义字段类
            localized_fields=('birth_date',)#本地化,不同时区显示数据,需要在setting中TIME_ZONE='Asia/Shanghai' USER_TZ=True
    ModelForm

    验证过程:is_valid->full_clean->钩子->整体错误

    class UserInfoModelForm(forms.ModelForm):
    
        #可用于一个月免登录的自定义字段
        is_rmb=Fields.CharField(widget=widgets.CheckboxInput())
    
        class Meta:
            model=models.UserInfo
            fields='__all__'#所有字段,列表,可以写成列表['username']
            # exclude=['username']
            labels=None#提示消息
            help_texts=None#帮助信息
            widgets={
                'username':widgets.TextInput(attrs={'class':'c1'})
            }#自定义插件
            error_messages={
                'email':{
                    "required":"必须输入",
                    "incalid":"格式不对",
                }
            }#错误信息
            field_classes={
                # "email":Fields.URLField
            }#自定义字段类
            localized_fields=('birth_date',)#本地化,不同时区显示数据,需要在setting中TIME_ZONE='Asia/Shanghai' USER_TZ=True
    
        def clean_username(self):
            old=self.cleaned_data["username"]
            return "..."
    
    def index(request):
        if request.method=="GET":
            obj=UserInfoModelForm()
            return render(request,'index.html',{'obj':obj})
        elif request.method=="POST":
            obj=UserInfoModelForm(request.POST)
            if obj.is_valid():
                obj.save()
            # print(obj.is_valid())
            # print(obj.cleaned_data)
            # print(obj.errors.as_json)
            # models.UserInfo.objects.create(**obj.cleaned_data)#写入数据库
            return render(request,'index.html',{'obj':obj})
    
    def user_list(request):
        li=models.UserInfo.objects.all().select_related("usertype")
        return render(request,"user_list.html",{"li":li})
    
    def useredit(request,nid):
        #获取当前id用户信息并显示
        if request.method=="GET":
            user_obj=models.UserInfo.objects.filter(id=nid).first()#获取数据
            mf=UserInfoModelForm(instance=user_obj)#在页面显示数据库的信息
            return render(request,"useredit.html",{"mf":mf,"nid":nid})
        elif request.method=="POST":
            user_obj = models.UserInfo.objects.filter(id=nid).first()  # 获取
            mf=UserInfoModelForm(request.POST,instance=user_obj)
            if mf.is_valid():
                #自定制字段保存cookie,session
                mf.save()
            else:
                print(mf.errors.as_json())
                return render(request, "useredit.html", {"mf": mf, "nid": nid})
    

      

  • 相关阅读:
    被放弃的概率权,机器下围棋不理会沉没成本
    百位性感女明星三围大曝光,体型测试设计
    斯坦福大学机器学习,EM算法求解高斯混合模型
    Javascript图片预加载详解
    使用马尔可夫模型自动生成文章
    18种女粉引流方法、效果、评估
    既然认准了这条路,就不必打听要走多久!
    新媒体运营10个大坑,思维导图版
    谷歌发布"自动机器学习"技术 AI可自我创造
    Centos7下PHP的卸载与安装nginx
  • 原文地址:https://www.cnblogs.com/Neroi/p/10468462.html
Copyright © 2011-2022 走看看