form和modelform

author author     2022-09-22     145

关键词:

Django表单系统中,所有的表单类都作为django.forms.Form的子类创建,包括ModelForm

关于django的表单系统,主要分两种

基于django.forms.Form:所有表单类的父类

基于django.forms.ModelForm:可以和模型类绑定的Form

form实例

# app01/views.py
from django.shortcuts import render, HttpResponse
                                                  
# Create your views here.
# from django import forms
from django import forms
                                                  
                                                  
class LoginForm(forms.Form):
    user=forms.CharField(min_length=5,
                         max_length=12,
                         error_messages={required:"该内容不能为空"},                                widget=forms.TextInput(attrs={"class":"s",placeholder:user})
                         )
    pwd=forms.CharField()
                                                         
                                                           
def login(request):
    if request.method=="POST":
        form_obj=LoginForm(request.POST)
        if form_obj.is_valid():
            print(form_obj.cleaned_data)
        else:
            print(form_obj.errors)
        return HttpResponse("OK")
    form_obj=LoginForm()
    return render(request, "login.html",{form_obj: form_obj})
 
# template/login.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/login/" method="POST">
    {% csrf_token %}
    {{ form_obj.as_p }}
    <button>提交</button>
</form>
</body>
</html>

###或
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/login/" method="POST">
    {% csrf_token %}
    {{ form_obj.user }}
    {{ form_obj.pwd }}
    <button>提交</button>
</form>
</body>
</html>
##注意事项
1) {% csrf_token %}
2)  html中button标签在form表单中具有提交功能,在form表单外不具有提交功能
{{ form_obj.as_p }}
{{ form_obj.as_ul }}
{{ form_obj.as_table }}

ModelForm实例

from django.shortcuts import render, redirect, HttpResponse
from . import models
# Create your views here.
from django.forms import ModelForm
from django.forms import widgets as wid
from django.forms import fields as fld
                                        
                                        
class UserModelForm(ModelForm):
    class Meta:                 
        model = models.UserInfo
        fields = "__all__"              
        fields = [username,nickname]
        exclude = [username]                       
        error_messages={                             
            username: {required: 用户名不能为空},
        }                                            
        widgets= {                                   
            username: wid.Textarea(attrs={class:"c1"})
        }                                            
        labels={                                     
            username: 用户名,                    
        }                                            
        help_texts= {                                
            username: 别瞎写,.......             
        }                                            
        field_classes= {                            
            nickname: fld.EmailField              
        }                                           
                                 
                                 
class RoleModelForm(ModelForm):
    class Meta:                 
        model = models.Role      
        fields = "__all__"       
                                       
                                       
class PermissionModelForm(ModelForm):
    class Meta:                 
        model = models.Permission
        fields = "__all__"       
                                 
                                 
class MenuModelForm(ModelForm):
    class Meta:                 
        model = models.Menu      
        fields = "__all__"       
                                            
                                            
def users(request):                        
    user_list= models.UserInfo.objects.all()
    return render(request,"rbac/users.html",{user_list:user_list})
                               
                               
def user_add(request):
    if request.method == "GET":
        model_form=UserModelForm()
        return render(request, "rbac/user_add.html", {model_form:model_form})                    
    else:                                     
        model_form=UserModelForm(request.POST)
        if model_form.is_valid():
            model_form.save()
            return redirect("/rbac/users/")
        return render(request, "rbac/user_add.html", {model_form: model_form})                                          
                                                      
                                                      
def user_del(request,pk):                            
    obj_queryset=models.UserInfo.objects.filter(pk=pk)
    if obj_queryset:                                  
        obj_queryset.delete()                         
    return redirect("/rbac/users/")                    
                                                       
                                                       
def user_edit(request,pk):
    obj = models.UserInfo.objects.filter(pk=pk).first()
    if not obj:                        
        return redirect("/rbac/users/")
    if request.method=="GET":
        model_form=UserModelForm(instance=obj)
        return                        render(request,rbac/user_edit.html,{model_form:model_form})
    else:                                                 
        model_form=UserModelForm(request.POST,instance=obj)
        if model_form.is_valid():                        
            model_form.save()                             
            return redirect("/rbac/users/")                
        return render(request, rbac/user_edit.html, {model_form: model_form})
 
 

 

 

django中的form和modelform中的问题

django的Form组件中,如果字段中包含choices参数,请使用两种方式实现数据源实时更新方法一:重写构造方法,在构造方法中重新去获取值classUserForm(forms.Form):name=fields.CharField(label=‘用户名‘,max_length=32)email=fields.EmailField(label=‘邮箱‘)u_... 查看详情

form和modelform组件(代码片段)

Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格... 查看详情

django中的modelform和modelfoemset(代码片段)

一.ModelForm  ModelForm是根据Model来定制的Form二.ModelForm的创建fromdjangoimportformsfromappimportmodelsclassMyModelForm(forms.ModelForm):classMeta:model=models.Bookfields="__all__"    labels=        "title":"书名",        "price":"价格" ... 查看详情

djangoform和modelform(代码片段)

...From所有内置字段四字段校验五Hook钩子方法六进阶补充七ModelForm八xxx一Form介绍    我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。  与此同时我们在好多... 查看详情

django——form组件和modelform(代码片段)

一、原生form实现书城增删改查1、构建模型并完成数据库迁移(1)构建书城模型fromdjango.dbimportmodels#Createyourmodelshere.#创建一个图书管理系统的模型classBook(models.Model):title=models.CharField(max_length=32)price=models.DecimalField(max_digits=8, 查看详情

django之modelform

 顾名思义,Model+Form==ModelForm。model和form的合体,所以有以下功能:验证数据字段(Form的功能)数据库操作(Model的功能)model有操作数据库的字段,form验证也有那几个字段,虽然耦合度降低,但是代码是有重复的。如果利用... 查看详情

django的modelforms的介绍

fromdjango.formsimportModelFormclassTest(ModelForm):#把那张表转化成form组件classMeta:#这个意思即是把Article转化成form组件model=models.Article#把表中的所有的字段都做转化,这里也可以传递一个list,可以指定显示某些字段fields="__all__"#modelform组件... 查看详情

modelform(代码片段)

Model+Form==>ModelForm。model和form的结合体,有以下功能:验证+数据库操作1、之前写法  models.pyfromdjango.dbimportmodelsclassUserType(models.Model):caption=models.CharField(max_length=32)classUserInfo(models.Model):username 查看详情

django之modelform(代码片段)

简介Model+Form==>ModelForm。model和form的结合体,所以有以下功能:验证数据库操作Form回顾models.pyclassUserType(models.Model):caption=models.CharField(max_length=32)classUserInfo(models.Model):username=models.CharField(max_le 查看详情

django之modalform(代码片段)

ModelForm自己定义的form---&gt;Form---&gt;BaseForm自己定义的ModelForm---&gt;ModelForm---&gt;BaseModelForm---&gt;BaseForm从上面可以看出form和ModelForm都是继承BaseForm,所以在Form中有的方法在ModelForm中也是有的,包括is_vali 查看详情

djangomodelform(代码片段)

什么是ModelFormDjango中Model负责操作数据库,并且具有简单的数据库验证功能;Form用于用户请求的验证,具有强悍的数据库验证功能;ModelForm是将二者合二为一,即可用于数据库操作(部分),也可用于用户请求的验证(部分)!... 查看详情

form和modelform组件(代码片段)

Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格... 查看详情

form和modelform组件1(代码片段)

Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格... 查看详情

Django - form.save() 没有创建 ModelForm

】Django-form.save()没有创建ModelForm【英文标题】:Django-form.save()isnotcreatingModelForm【发布时间】:2020-07-2403:48:32【问题描述】:在我的Django应用程序中,用户发送有关任务的反馈。我正在用ModelForm创建这个form,在form.save()之后,我... 查看详情

如何在 ModelForm 中使用 forms.ChoiceField()?

】如何在ModelForm中使用forms.ChoiceField()?【英文标题】:Howtouseforms.ChoiceField()insideModelForm?【发布时间】:2017-04-1415:05:24【问题描述】:我想使用ModelForm在我的表单中显示一个下拉列表。我的代码添加在下面-fromdjangoimportformsfromdjang... 查看详情

modelform(代码片段)

ModelForm为了简单我们今天不撩妹,专聊一个神奇的宝贝组件modelform,看到这个单词我们就明白这个组件就是把model和form组合起来,大家记住了!就比如我们在使用的数据库中建立了一个客户表,字段有姓名,年龄,爱好,邮箱,电话,住址,注... 查看详情

form组件,modelform组件

一:form组件功能  form组件:1.效验2.页面显示错误信息3.渲染页面4.只要错误信息重置 二:form组件的语法:fm=BookForm("title":"yuan","price":123,"email":"123")fm.is_valid()#如果效验失败就返回False#如果效验成功就返回Truefm.cleaned_data返回校成... 查看详情

django的modelform(代码片段)

...l__)->_post_clean-cleand_data-error-------->推荐<---------二、ModelForm操作及验证Model+Form==>ModelForm。model和form的结合体,所以有以下功能:验证数据库操作model有操作数据库的字段,form验证也有那几个字段,虽然耦合度降低,但是... 查看详情