首页 > 其他分享 >Django views.py 增,删,改

Django views.py 增,删,改

时间:2023-01-08 16:13:08浏览次数:41  
标签:depart form views models title py request Django obj

from django import forms from django.shortcuts import render, redirect from app01 import models # Create your views here.

def depart_list(request):     """ 部门列表 """
    # 去数据库中获取所有的部门列表     # queryset 理解为 [对象,对象,对象]  要循环才取的出来     queryset = models.Department.objects.all()  # 获取所有部门列表的信息     # 把 queryset 当作参数传递给 render ,内部在模板渲染的时候就可以取到 queryset     return render(request, "depart_list.html", {'queryset': queryset})

def depart_add(request):     """ 添加部门 """     if request.method == "GET":         return render(request, "depart_add.html")     # 获取用户POST提交过来的数据 (title输入为空)     title = request.POST.get("title")     # 保存到数据库     models.Department.objects.create(title=title)
    # 重定向回部门列表     return redirect("/depart/list/")

def depart_delete(request):     """ 删除部门 """     # 获取ID     nid = request.GET.get('nid')     # 删除     models.Department.objects.filter(id=nid).delete()     # 跳转回     return redirect("/depart/list/")

def depart_edit(request, nid):     """ 修改部门 """     if request.method == "GET":         # 根据nid,获取他的数据 [obj,]         row_object = models.Department.objects.filter(id=nid).first()         # print(row_object.id, row_object.title)         return render(request, "depart_edit.html", {"row_object": row_object})     # 获取用户提交的标题     title = request.POST.get("title")     print(title)     # 根据ID找到数据库中的数据,并进行更新     # models.Department.objects.filter(id=nid).update(title=title, 其他=123) 多个或者其他 其他上面获取,这里更新     models.Department.objects.filter(id=nid).update(title=title)
    # 重定向回部门列表     return redirect("/depart/list/")

def user_list(request):     """ 用户管理 """     # 获取所有用户列表 [对象,对象,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)     # datetime.datetime 转字符串 .strftime("%Y-%m-%d-%H-%M")  用python的语法获取数据     # <td>{{ obj.create_time|date:"Y-m-d H:i:s" }}</td>  在HTML中对时间的处理,所有的都不加括号     # print(type(obj.create_time),type(obj.create_time.strftime("%Y-%m-%d")))     # obj.gender 对应的是数据库储存的1/2     # obj.get_gender_display()  # 根据数值1/2 去找对应的文本内容,不用自己去找   get_字段名_display()     # xx = models.Department.objects.filter(id=obj.depart_id).first()   # 手动写代码把id=obj.depart_id去找相关的表     # xx.title  # 在相关的表中取 title     # obj.depart_id  # 获取数据库中存储的那个字段     # obj.depart.title  # 根据id自动去关联的表中获取哪一行数据 depart对象。     """     return render(request, 'user_list.html', {"queryset": queryset})

def user_add(request):     """ 添加用户 """     context = {         'gender_choices': models.UserInfo.gender_choices,         'depart_list': models.Department.objects.all()     }     return render(request, "user_add.html", context)
# ################### ModelForm 示例###################

class UserModelForm(forms.ModelForm):     # name 字符串长度最小等于3     name = forms.CharField(min_length=3, label="用户名")     # 校验所有数据是否为空
    class Meta:         model = models.UserInfo         fields = "__all__"  # 自动显示所有         # fields = ["name", "password", "age", "account", "create_time", "gender", "depart"         #   ]   # 指定显示哪些         exclude = ['depart']  # 除了depart都显示,哪里有问题         # widgets = {         #     "name": forms.TextInput(attrs={"class": "form-control"}),         #     "password": forms.PasswordInput(attrs={"class": "form-control"}),         #     "age": forms.TextInput(attrs={"class": "form-control"}),         # }
    def __init__(self, *args, **kwargs):  # 重新定义它的__init__方法         super().__init__(*args, **kwargs)  # 执行它父类定义的方法         # 循环找到所有的插件,添加了class="form-control"         for name, field in self.fields.items():             # if name == "password":  不添加样式的可以在这里判断一下             #     continue             # print(name, field)  # name可以拿到所有定义的字段,名字。field 可以拿到它对象             field.widget.attrs = {"class": "form-control",                                   "placeholder": field.label}  # widget 表示拿到的插件

def user_model_form_add(request):     """ 添加用户(ModelForm版本) """     if request.method == "GET":         form = UserModelForm()         return render(request, 'user_model_form_add.html', {"form": form})     # 用户POST提交的数据,数据校验。     form = UserModelForm(data=request.POST)     if form.is_valid():         # 如果数据合法,保存到数据库         # {'name': '123', 'password': '123', 'age': 11, 'account': Decimal('1'), 'create_time': datetime.datetime(2011, 11, 12, 0, 0, tzinfo=zoneinfo.ZoneInfo(key='UTC')), 'gender': 2, 'depart': <Department: IT部门>}         # print(form.cleaned_data)         # models.UserInfo.objects.create(...)  # 保存到数据库         form.save()  # 自动将提交的数据保存到数据库的表里面 那个表(定义的这个表 model = models.UserInfo)         return redirect('/user/list/')     # 校验失败(在页面上显示错误信息)         # print(form.errors)     return render(request, 'user_model_form_add.html', {"form": form})

def user_edit(request, nid):     """ 编辑用户 """     row_object = models.UserInfo.objects.filter(id=nid).first()     if request.method == "GET":         # 根据ID去数据库获取要编辑的那一行数据(对象) instance=row_object  modelform默认在页面显示每一个         form = UserModelForm(instance=row_object)         return render(request, 'user_edit.html', {'form': form})     # instance=row_object 不是添加,而是更新     form = UserModelForm(data=request.POST, instance=row_object)     if form.is_valid():         # 默认保存的是用户输入的所有数据,如果想要再用户输入以外增加一点值         # form.instance.字段名 = 值         form.save()         return redirect('/user/list/')     return render(request, 'user_edit.html', {"form": form})

def user_delete(request, nid):     models.UserInfo.objects.filter(id=nid).delete()     return redirect('/user/list/')

标签:depart,form,views,models,title,py,request,Django,obj
From: https://www.cnblogs.com/yanyongfu/p/17034794.html

相关文章

  • python使用ntp动态校正时间
    使用ntpudp链接服务器(例如:ntp2.aliyun.com),端口为123,发送48bytes(第一字节为0x1b,后面为0),接收48bytes,解析即可.代码如下:importsocketimportstructimpor......
  • 快过年了,Python实现12306查票以及自动购票....
    马上就要过年了,听说还有人买不到票?不要慌,今天咱们来用Python做一个自动查票抢票的脚本,24小时抢票,谁抢的过你! 准备工作环境Python3.8Pycharm插......
  • models.py 表的参数选择
    fromdjango.dbimportmodels#Createyourmodelshere.classDepartment(models.Model):  #以后可以新增,删除,修改,所以单独拿出来  """部门表"""  ......
  • python module
    1.easyguieasygui是Python的一个图形化界面的库。下载模块pipinstalleasygui常用功能消息弹窗msgbox() #消息弹窗msgbox(msg='',title='',ok_butt......
  • 基于pytorch的图像训练识别
    一、准备数据集分为测试集和训练集,文件如下排放   二、开始识别数据集准备好后,即可导入到模型开始训练,运行下列代码importtimefromtorch.utils.tensorboard......
  • Python 获取并分析均价思路
    1、思路:分析网页,是静态网页后,用requests建立解析。2、步骤:--建立headers方法--拼接start-URL,--构件程序控制函数main控制运行,这里代码很少,其实不用的。--requests循......
  • python django 云招聘系统(课设、毕设、学习)
    pythondjango云招聘系统(课设、毕设、学习)pythondjango简历系统pythondjango招聘系统pythondjango职位招聘后端:pythondjango数据库:MySQL5.7前端:htmlcssjs等涉及......
  • Python @装饰器函数--检测函数运行时间
    importtime#导入time包 """构件计时函数"""deftimer(xiangca):  deffn2(*args,**kwargs):    f=time.time()    result=xiangca(*args,*......
  • 【Python】SystemError: tile cannot extend outside image:【PIL Image crop()】
    #图片裁剪,需要设置边缘间距【left,upper,right,lower】image_5=image.crop(box=(1000,1000,1000,1000))image_5.show()出现错误SystemError:tilecannotextendo......
  • 极客编程python入门-hmac/urllib
    hmacHmac算法针对所有哈希算法都通用,无论是MD5还是SHA-1。采用Hmac替代我们自己的salt算法,可以使程序算法更标准化,也更安全。Python自带的hmac模块实现了标准的Hmac算法。>>......