关键词:
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--->Form--->BaseForm自己定义的ModelForm--->ModelForm--->BaseModelForm--->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验证也有那几个字段,虽然耦合度降低,但是... 查看详情