目录
1.手动在数据库中添加三行数据
2.用户列表的创建
views
html
3.新建用户
原始方法新建用户
views
html
原始方法思路不被采用的太麻烦了
4.初始form
views
2user_add.html
5.ModleForm(推荐)
views
user_model_form_add.html
6.添加错误提示
views
对user_model_form_add.html进行修改
在settins.py中
用户编辑页面
user_edit的views.py
user_edit的html页面和user_model_form_add.html的页面一样
删除页面
1.手动在数据库中添加三行数据
insert into app01_userinfo(name,password,age,account,create_time,gender,depart_id)
VALUES("小明","123",23,100.87,"2020-11-11",4,1),
("小王","123",23,100.87,"2020-11-11",4,1),
("小红","123",23,100.87,"2020-11-11",4,1);
2.用户列表的创建
views
def user_list(request): """ 用户管理 """ # 获取所有用户列表 [obj,obj,obj] queryset = models.UserInfo.objects.all() """ # 用Python的语法获取数据 for obj in queryset: print(obj.id, obj.name, obj.account, obj.create_time.strftime("%Y-%m-%d"), obj.gender, obj.get_gender_display(), obj.depart_id, obj.depart.title) # print(obj.name, obj.depart_id) # obj.depart_id # 获取数据库中存储的那个字段值 # obj.depart.title # 根据id自动去关联的表中获取哪一行数据depart对象。 """ return render(request, 'user_list.html', {"queryset": queryset})
html
{% extends 'layout.html' %} {% block content %} {# target="_blank"在新页面跳转打开#} 新建用户 用户列表
ID | 姓名 | 密码 | 年龄 | 余额 | 时间 | 性别 | 部门 | 操作 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{{ obj.id }} | {{ obj.name }} | {{ obj.password }} | {{ obj.age }} | {{ obj.account }} | {{ obj.create_time|date:"Y-m-d H:i:s" }} |
{# 模板语法不能用()会自动补充 #}
|
3.新建用户
原始方法新建用户
views
def user_add(request): '''添加用户''' if request.method == "GET": context = { 'gender_choices': models.UserInfo.gender_choices, "depart_list": models.Department.objects.all() } return render(request, 'user_add.html', context) # 获取用户提交的数据 name = request.POST.get('name') pwd = request.POST.get('pwd') age = request.POST.get('age') account = request.POST.get('ac') ctime = request.POST.get('ctime') gender = request.POST.get('gd') depart_id = request.POST.get('dp') # 添加到数据库中 models.UserInfo.objects.create(name=name, password=pwd, age=age, account=account, create_time=ctime, gender=gender, depart_id=depart_id) # 返回到用户列表页面 return redirect("/user/list/")
html
{% extends 'layout.html' %} {% block content %} 新建用户{% endblock %}
原始方法思路不被采用的太麻烦了
1.用户提交数据没有校验
2.错误页面上应有错误提示
3.页面上每一个字段都需要重新写一遍
4.关联的数据还要手动获取,循环展示在页面当中
4.初始form
views
class MyForm(Form):
user = forms.CharField(widget=forms.Input)
pwd = forms.CharField(widget=forms.Input)
email = forms.CharField(widget=forms.Input)
def user_add(request):
if(request.method == "GET"):
form = MyForm()
return render(request, 'user_add.html',{'form':form})
2user_add.html
5.ModleForm(推荐)
views
class UserModelForm(forms.ModelForm): class Meta: model = models.UserInfo fields = ['name', 'password', 'age', 'account', 'create_time', 'gender', 'depart'] def __init__(self,*args, **kwargs): super().__init__(*args, **kwargs) # 循环找到所有的插件,添加 for name,field in self.fields.items(): field.widget.attrs = {"class": "form-control","placeholder":field.label} def user_model_form_add(request): '''添加用户基于ModelForm版本''' form = UserModelForm() return render(request,'user_model_form_add.html',{'form':form})
user_model_form_add.html
{% extends 'layout.html' %} {% block content %} 新建用户{% endblock %}
6.添加错误提示
views
def user_model_form_add(request): '''添加用户基于ModelForm版本''' if request.method =="GET": form = UserModelForm() return render(request,'user_model_form_add.html',{'form':form}) form = UserModelForm(data=request.POST) # 调用form.is_valid()拿着data=request.POST的数据,对field的数据进行注意校验 if form.is_valid(): # 校验成功获取数据 # print(form.cleaned_data) # 如果数据合法保存数据自动存到models.UserInfo类中 form.save() return redirect('/user/list/') # 校验失败获取错误信息form.errors # print(form.errors) # 校验错误(在页面上显示错误) return render(request, 'user_model_form_add.html', {'form': form})
对user_model_form_add.html进行修改
{# novalidate不让浏览器进行自动校验#}
在settins.py中
将报错改成中文
# LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans'
用户编辑页面
user_edit的views.py
def user_edit(request,nid): '''编辑用户''' # 根据id去数据库获取要编辑的哪一行的数据对象放在外面get和post都能用到 row_object = models.UserInfo.objects.filter(id=nid).first() if request.method =="GET": form = UserModelForm(instance=row_object) return render(request, 'user_edit.html', {'form': form}) #在提交的时候不再新增数据,而是吧新提交的数据更新到原来的上面 form = UserModelForm(data=request.POST,instance=row_object) if form.is_valid(): form.save() return redirect('/user/list/') return render(request, 'user_edit.html', {'form': form})
user_edit的html页面和user_model_form_add.html的页面一样
删除页面
def user_delete(request, nid): models.UserInfo.objects.filter(id=nid).delete() return redirect('/user/list/')
{ obj.id }}/delete/">删除
还没有评论,来说两句吧...