• 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})
    

      

  • 相关阅读:
    WorkerMan中php后端及时推送消息给客户端
    解析Laravel框架下的Contracts契约
    如何在 Laravel 中使用 Slack 进行异常通知
    用户异常与模拟异常的派发
    [IDA] 将变量索引进行计算
    [反汇编]栈帧中函数的参数传入位置
    用户模拟异常的记录
    [反汇编]函数开始部分利用mov ebx,esp找到返回地址(_KTRAP_FRAME结构)
    [反汇编] 获取上一个栈帧的ebp
    CPU异常分析(以trap00为例)
  • 原文地址:https://www.cnblogs.com/Neroi/p/10468462.html
Copyright © 2020-2023  润新知