当前位置: 首页 > news >正文

python-web应用程序-Django-From组件

python-web应用程序-Django-From组件

添加用户时

原始方法(本质)【麻烦】

def user_add(req):if req.method == 'GET':return render(req,'XXX.html')#POST请求处理:XXXXX
-用户数据没有校验
-出现错误提示
-页面上的每一个字段都需要我们重新写一遍
-关联数据需要手动获取

Django组件

Form组件(方便)

view.py:


class MyForm(Form):user = forms.CharField(widget = forms.Input)pwd = forms.CharField(widget = forms.Input)email = forms.CharField(widget = forms.Input)XXX=XXX---def user_add(req):if req.method == 'GET':form = MyForm()return render(req,'XXX.html',{'form':form})#POST请求处理:XXXXX

2.user_add.html

<form method="post">
{{ form.user }}
{{ form.pwd }}
{{ form.email }}
<!-- 自动生成:<input type="text"placeholder="姓名" name="user"/> -->
或者:
{% for field in form %}{{field.lable}}  :  {{field}}
{% endfor %}    
</form>

ModelForm组件(更方便)

在modelForm中不需要手动写类的声明

view.py:

class MyForm(ModelForm):xx = form.CharField(XXXX)  #新增加的字段class Meta:model = model.类fields = ['name','password','---']

其余与Form相同

  • 当传的对象为【对象,对象,对象,】时需要写该类的__str__方法

models.py

class depart(models.Model):title = models.CharField(max_length=10)def __str__(self):return self.title#定制返回值

给自动生成的输入框增加样式

view.py中:

class UserInfo(forms.ModelForm):class Meta:model = models.UserInfofields = ['name','password','ahe']widgets = {'name':forms.TextInput(attrs={'class':'layui-input'})'password':forms.TextInput(attrs={'class':'BootStrip-form-control'})'XXXX':XXXX }
#自动添加样式
class UserInfo(forms.ModelForm):class Meta:model = models.UserInfofields = ['name','password','ahe']def __init__(self,*args,**kwargs):super().__init__(*args,**kwargs)for name,field in self.fields.items():if name =='':XXXXX#单独处理or  continue不处理field.widget.attrs= {'class':'XXXXX','placehoder':field.label}

校验

view.py:

def user_add(req):if req.method == 'GET':form = UserInfo()return render(req,'XXX.html',{'form':form})#POST请求处理:form = UserInfo(data = req.POST)if form.is_valid():print(form.cleaned_data)else:print(form.errors)#{'name':'yulin','password':'123456'...}#models.UserInfo.object.create(XXXX)form.save()return redirect('/user/list/')#检验失败return render(req,'user_add.html',{'form',form})
#该form中存在错误信息
#前端获取错误信息
{%  for field in form  %}
<div class=”form-group"><label>{{ field.Label }}</label>{{ field }}
<span styLe="coLor: red;">{{ field.errors.0 }}	</span>
</div>
{% endfor %}
http://www.lryc.cn/news/364192.html

相关文章:

  • K8s(Kubernetes)常用命令
  • C#-for循环语句
  • css动画案例练习之会展开的魔方和交错的小块
  • 前端逆向之下载canvas引用的图片
  • 深度学习手撕代码题
  • vue3 + ts 动态添加路由,刷新页面白屏问题解决方案
  • 【Kubernetes】k8s的调度约束(亲和与反亲和)
  • Java数据结构- Map和Set
  • JVM参数配置
  • Vue 实现的精彩动画效果
  • JVM类加载机制详解(JDK源码级别)
  • 美国年轻人热衷床上“摆烂”,沃尔玛发掘床上用品新商机!
  • 3168. 候诊室中的最少椅子数
  • C# PaddleOCR 单字识别效果
  • pyopengl 立方体 正投影,透视投影
  • 人工智能任务5-高级算法工程师需要学习哪些课程与掌握哪些能力
  • 服务器上创建搭建gitlab
  • LangChain学习之prompt格式化与解析器使用
  • 基于EasyX的贪吃蛇小游戏 - C语言
  • 使用Docker辅助图像识别程序开发:在Docker中显示GUI、访问GPU、USB相机以及网络
  • Java中常见错误-泛型擦除及桥接方法问题及解决方案
  • Linux 程序守护脚本
  • 跨境电商|Facebook Marketplace怎么做?
  • .gitignore 文件
  • qt中实现多语言功能
  • 数据结构与算法之 leetcode 513. 找树左下角的值 (BFS) 广度优先
  • mysql中的函数
  • Shell正则表达式与文本处理器
  • 双指针法 ( 三数之和 )
  • 感染恶意代码之后怎么办?