网站的开发工具,阜宁专业做网站的公司,传奇大气网站模板免费下载,网站建设多语种自动翻译插件Django开发3 Django开发编辑用户9.靓号管理9.1 表结构9.2 靓号列表9.3 新建靓号9.4 编辑靓号9.5 搜索手机号9.6 分页 10.时间插件11.ModelForm和BootStrap操作 各位小伙伴想要博客相关资料的话关注公众号#xff1a;chuanyeTry即可领取相关资料#xff01; Django开发
部门管… Django开发3 Django开发编辑用户9.靓号管理9.1 表结构9.2 靓号列表9.3 新建靓号9.4 编辑靓号9.5 搜索手机号9.6 分页 10.时间插件11.ModelForm和BootStrap操作 各位小伙伴想要博客相关资料的话关注公众号chuanyeTry即可领取相关资料 Django开发
部门管理用户管理用户列表新建用户 - ModelForm针对数据库中的某个表。- Form编辑用户 点击编辑跳转到编辑页面将编辑行的ID携带过去。 编辑页面默认数据根据ID获取并设置到页面中 提交 错误提示 数据校验 在数据库更新 models.UserInfo.filter(id4).update(...)9.靓号管理
9.1 表结构 根据表结构的需求在models.py中创建类由类生成数据库中的表。
class PrettyNum(models.Model): 靓号表 mobile models.CharField(verbose_name手机号, max_length11)# 想要允许为空 nullTrue, blankTrueprice models.IntegerField(verbose_name价格, default0)#如果是整形则长度不用加level_choices ((1, 1级),(2, 2级),(3, 3级),(4, 4级),)level models.SmallIntegerField(verbose_name级别, choiceslevel_choices, default1)status_choices ((1, 已占用),(2, 未使用))status models.SmallIntegerField(verbose_name状态, choicesstatus_choices, default2)自己在数据模拟创建一些数据
insert into app01_prettynum(mobile,price,level,status)values(111111111,19,1,1);mysql select * from app01_prettynum;
-------------------------------------
| id | mobile | price | level | status |
-------------------------------------
| 1 | 111111111 | 19 | 1 | 1 |
| 2 | 111111111 | 19 | 1 | 1 |
| 3 | 111111111 | 19 | 1 | 1 |
| 4 | 111111111 | 19 | 1 | 1 |
-------------------------------------
4 rows in set (0.01 sec)9.2 靓号列表 URL 函数 获取所有的靓号 结合htmlrender将靓号罗列出来 id 号码 价格 级别中文 状态中文9.3 新建靓号 列表点击跳转/pretty/add/ URL ModelForm类 from django import formsclass PrettyModelForm(forms.ModelForm):...函数 实例化类的对象通过render将对象传入到HTML中。模板的循环展示所有的字段。 点击提交 数据校验保存到数据库跳转回靓号列表 9.4 编辑靓号
列表页面/pretty/数字/edit/URL函数 根据ID获取当前编辑的对象ModelForm配合默认显示数据。提交修改。 不允许手机号重复。 添加【正则表达式】【手机号不能存在】 # [obj,obj,obj]
queryset models.PrettyNum.objects.filter(mobile1888888888)obj models.PrettyNum.objects.filter(mobile1888888888).first()# True/False
exists models.PrettyNum.objects.filter(mobile1888888888).exists()编辑【正则表达式】【手机号不能存在】 排除自己以外其他的数据是否手机号是否重复# id!2 and mobile1888888888
models.PrettyNum.objects.filter(mobile1888888888).exclude(id2)9.5 搜索手机号
models.PrettyNum.objects.filter(mobile19999999991,id12)data_dict {mobile:19999999991,id:123}
models.PrettyNum.objects.filter(**data_dict)models.PrettyNum.objects.filter(id12) # 等于12
models.PrettyNum.objects.filter(id__gt12) # 大于12
models.PrettyNum.objects.filter(id__gte12) # 大于等于12
models.PrettyNum.objects.filter(id__lt12) # 小于12
models.PrettyNum.objects.filter(id__lte12) # 小于等于12data_dict {id__lte:12}
models.PrettyNum.objects.filter(**data_dict)models.PrettyNum.objects.filter(mobile999) # 等于
models.PrettyNum.objects.filter(mobile__startswith1999) # 筛选出以1999开头
models.PrettyNum.objects.filter(mobile__endswith999) # 筛选出以999结尾
models.PrettyNum.objects.filter(mobile__contains999) # 筛选出包含999data_dict {mobile__contains:999}
models.PrettyNum.objects.filter(**data_dict)9.6 分页
queryset models.PrettyNum.objects.all()
//取所有
queryset models.PrettyNum.objects.filter(id1)[0:10]
//取前十条# 第1页
queryset models.PrettyNum.objects.all()[0:10]# 第2页
queryset models.PrettyNum.objects.all()[10:20]# 第3页
queryset models.PrettyNum.objects.all()[20:30]data models.PrettyNum.objects.all().count()
data models.PrettyNum.objects.filter(id1).count()分页的逻辑和处理规则 封装分页类 从头到尾开发写项目用【pagination.py】公共组件。 小Bug搜索 分页情况下。 分页时候保留原来的搜索条件http://127.0.0.1:8000/pretty/list/?q888
http://127.0.0.1:8000/pretty/list/?page1http://127.0.0.1:8000/pretty/list/?q888page2310.时间插件
link relstylesheet hrefstatic/plugins/bootstrap-3.4.1/css/bootstrap.css
link relstylesheet hrefstatic/plugins/bootstrap-datepicker/css/bootstrap-datepicker.cssinput typetext iddt classform-control placeholder入职日期script srcstatic/js/jquery-3.6.0.min.js/script
script srcstatic/plugins/bootstrap-3.4.1/js/bootstrap.js/script
script srcstatic/plugins/bootstrap-datepicker/js/bootstrap-datepicker.js/script
script srcstatic/plugins/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js/scriptscript$(function () {$(#dt).datepicker({format: yyyy-mm-dd,startDate: 0,language: zh-CN,autoclose: true});})
/script11.ModelForm和BootStrap ModelForm可以帮助我们生成HTML标签。 class UserModelForm(forms.ModelForm):class Meta:model models.UserInfofields [name, password,]form UserModelForm(){{form.name}} 普通的input框
{{form.password}} 普通的input框定义插件 class UserModelForm(forms.ModelForm):class Meta:model models.UserInfofields [name, password,]widgets {name: forms.TextInput(attrs{class: form-control}),password: forms.PasswordInput(attrs{class: form-control}),age: forms.TextInput(attrs{class: form-control}),}class UserModelForm(forms.ModelForm):name forms.CharField(min_length3,label用户名,widgetforms.TextInput(attrs{class: form-control}))class Meta:model models.UserInfofields [name, password, age]{{form.name}} BootStrap的input框
{{form.password}} BootStrap的input框重新定义的init方法批量设置 class UserModelForm(forms.ModelForm):class Meta:model models.UserInfofields [name, password, age,]def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)# 循环ModelForm中的所有字段给每个字段的插件设置for name, field in self.fields.items():field.widget.attrs {class: form-control, placeholder: field.label}class UserModelForm(forms.ModelForm):class Meta:model models.UserInfofields [name, password, age,]def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)# 循环ModelForm中的所有字段给每个字段的插件设置for name, field in self.fields.items():# 字段中有属性保留原来的属性没有属性才增加。if field.widget.attrs:field.widget.attrs[class] form-controlfield.widget.attrs[placeholder] field.labelelse:field.widget.attrs {class: form-control, placeholder: field.label}class UserEditModelForm(forms.ModelForm):class Meta:model models.UserInfofields [name, password, age,]def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)# 循环ModelForm中的所有字段给每个字段的插件设置for name, field in self.fields.items():# 字段中有属性保留原来的属性没有属性才增加。if field.widget.attrs:field.widget.attrs[class] form-controlfield.widget.attrs[placeholder] field.labelelse:field.widget.attrs {class: form-control, placeholder: field.label}自定义类 class BootStrapModelForm(forms.ModelForm):def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)# 循环ModelForm中的所有字段给每个字段的插件设置for name, field in self.fields.items():# 字段中有属性保留原来的属性没有属性才增加。if field.widget.attrs:field.widget.attrs[class] form-controlfield.widget.attrs[placeholder] field.labelelse:field.widget.attrs {class: form-control, placeholder: field.label}class UserEditModelForm(BootStrapModelForm):class Meta:model models.UserInfofields [name, password, age,]models表不能拆分 view表可以拆分
操作 提取公共的类 ModelForm拆分出来 视图函数的归类