文章目录
- 9 初识Form
- 9.1 views.py
- 9.2 add.html
- 10 初识ModelForm
- 10.1 models.py
- 10.2 views.py
- 10.3 add.html
- 10.4 添加类
- 10.5 重写对象
- 往期回顾
9 初识Form
9.1 views.py
- 在html的文件中,如写
input
组件那种会写的非常繁琐,所以会用form的一个功能来进行简化编写 - 如果是对数据库进行比较校验,可以直接用form组件
简化前:
<input type="text" name="name" placeholder="用户名"/>
<input type="password" name="password" placeholder="密码"/>
<input type="text" name="age" placeholder="年龄"/>
<input type="submit" value="提交"/>
简化后views.py
文件中:
# 一般都会这样起名
class MyForm(Form):
name = forms.charField(widget = forms.Input)
pwd = forms.charField(widget = forms.Input)
email = forms.charField(widget = forms.Input)
# 实例化并传递过去
def add(request):
form = MyForm()
return render(request, 'add.html', {"form":form})
9.2 add.html
- 方式一
<form method="post">
{{form.name}}
{{form.pwd}}
{{form.email}}
</form>
- 方式二
<form method="post">
{% for field in form %}
{{ field }}
{% endfor %}
</form>
10 初识ModelForm
相对于form会进一步简洁(高级)
10.1 models.py
10.2 views.py
简化后views.py
文件中:
# 一般都会这样起名
# 支持去model那边取字段,也支持自己自定义字段
class MyForm(Form):
xx = form.CharField("...")
class Meta:
model = UserInfo
fields = {"name","password","age","xx"}
# 或者表示所有的字段
fields = {"__all__"}
# exclude ---排除某个字段
exclude = 【】
# 实例化并传递过去
def add(request):
form = MyForm()
return render(request, 'add.html', {"form":form})
10.3 add.html
- 方式一
<form method="post">
{{form.name}}
{{form.pwd}}
{{form.email}}
</form>
- 方式二
<form method="post">
{% for field in form %}
{{ field }}
{% endfor %}
</form>
10.4 添加类
- 注意,如果要用ModelForm要提前引用一个类
from django import forms
class 名字(forms.ModelForm):
class Meta:
model = models.表的名字
fields = ["ziduan【行名字】"]
- 例如
class user_mode(forms.ModelForm):
class Meta:
model = models.User_Info
fields = ["name", "password", "age"]
def form_user_add(request):
form = user_mode()
return render(request, "form.html", {'form': form})
<form method="post">
{% csrf_token %}
{{ form.name }}
{{ form.password }}
{{ form.age }}
</form>
- 还能显示中文
<form method="post">
{% csrf_token %}
{{ form.name.label }}:{{ form.name }}
{{ form.password.label }}:{{ form.password }}
{{ form.password.label }}:{{ form.age }}
</form>
10.5 重写对象
- 这种是面向对象的知识
如果出现这种情况的话,要去写表的那里返回一直值就可以解决
def __str__(self):
return self.需要展现的标题
class Department(models.Model):
"""注册表"""
# 注解 verbose_name='标题'
title = models.CharField(verbose_name='标题', max_length=32)
def __str__(self):
return self.title
往期回顾
1.【快速开发网站】
2.【浏览器能识别的标签1】
3.【浏览器能识别的标签2】
4.【浏览器能识别的标签3】
5.【浏览器能识别的标签4】
6.【案例1:用户注册】
7.【案例2:用户注册改进】
8.【快速了解 CSS】
9.【常用选择器概念讲解】
10.【CSS基础样式介绍1】
11.【CSS基础样式介绍2】
12.【CSS基础样式介绍3】
13.【CSS基础样式介绍3】
14.【案例 小米商城头标】
15.【案例 小米商城头标总结】
16.【案例 小米商城二级菜单】
17.【案例 商品推荐部分】
18.【伪类简单了解】
19.【position】
20.【案例 小米商城中app图标代码】
21.【边框及总结】
22.【BootSrap初了解】
23.【BootSrap的目录栏】
24.【BootSrap的栅格系统】
25.【案例 博客案例】
26.【案例 登录】
27.【案例 后台管理样例】
28.【图标】
29.【BootStrap依赖】
30.【javascript初了解】
31.【jJavaScript的变量】
32.【JavaScript的字符串类型】
33.【JavaScript的数组介绍】
34.【案例 动态数据】
35.【javascript 对象(字典)】
36.【案例 动态表格】
37.【Javascript的条件语句和函数】
38.【DOM初了解】
39.【DOM的事件了解】
40.【jQuery初了解】
41.【jQuery寻找标签】
42.【jQuery寻找标签2】
43.【jQuery寻找标签(间接寻找)】
44.【案例 菜单的切换】
45.【案例 只能打开一个菜单】
46.【jQuery 简单操作】
47.【案例 动态创建数据】
48.【案例 点击获取文本】
49.【案例 点击删除文本】
50.【案例 表格操作】
51.【案例 添加页面】
52.【初识MySQL】
53.【MySQL命令介绍一】
54.【MySQL命令介绍二】
55.【MySQL命令介绍三】
56.【案例:员工管理】
57.【案例 Flask+MySQL新增用户】
58.【案例 Flask+MySQL查询所有用户】
59.【初识 django】
60.【django的快速上手】
61.【django的模板语法】
62.【django的获取请求与响应】
63.【案例 用户登录】
64.【django中数据库操作】
65.【django中数据库操作–创建与删除表】
66.【django中数据库操作–操作表中的数据】
67.【案例 用户管理】
68.【A 案例: 员工管理系统1】
69.【A 案例: 员工管理系统2】
70.【A 案例: 员工管理系统3】
71.【A 案例: 员工管理系统4】
72.【A 案例: 员工管理系统5】
73.【A 案例: 员工管理系统6】