ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

django views 的增删改查

2022-05-06 01:33:44  阅读:164  来源: 互联网

标签:return form views 改查 request django forms user 员工


重写校验规则和插件格式,增加数据库中没有的字段

# 在view中引入数据库,并在页面中展示出来的写法  from django import forms  from django.core.validators import RegexValidator
# from django.core.exceptions import ValidationError
class 用户注册对象(forms.ModelForm):
    # 重新对数据库字段格式写校验的规则
    手机号 = forms.CharField(label="手机号",validators=[RegexValidator(r'^(1[3|4|5|6|7|8|9])\d{9}$','手机号输入错误'),])
    密码 = forms.CharField(widget=forms.PasswordInput(),)    #重新修改数据库的插件为密码
    重复密码 = forms.CharField(widget=forms.PasswordInput(),label="重复密码")
    class Meta:
        model = models.用户表
        fields = '__all__'
def 用户注册(request):
    form = 用户注册对象()
    return render(request,'user_add.html',{'form':form})

新增门店类型 {% csrf_token %} POST提交

<form method="POST" >
    {% csrf_token %}
 <div class="form-group">
      <label>门店名称</label>
       <input type="text" class="form-control" placeholder="请输入新增门店的名称" name="部门名称">
   </div>
 <button type="submit" class="btn btn-primary">提 交</button>
</form>


def 新增部门(request):   #这种写法是原始和简单的
    if request.method == "GET":
        return render(request, "bumen_add.html")
    # 获取用户通过POST提交过来的数据(要考虑输入为空,以后在完善,目前没有考虑)
    部门名称 = request.POST.get("部门名称")
    #保存到数据库
    models.部门表.objects.create(部门名称=部门名称)
    #重新定向回门店列表
    return redirect('/bumen/liebiao')

新增类型的标准写法

from django import forms

class MyForm(forms.ModelForm):
    员工姓名 = forms.CharField(min_length=3,label="员工姓名")  #这是增加第二个校验的条件,其他类似
    class Meta:
        model = models.员工表
        fields = ["员工姓名","员工密码","员工年龄","员工性别","账户余额","入职时间","部门ID2"]
        # widgets = {
        #     "员工姓名":forms.TextInput(attrs={"class":"form-control"})
        #     #这句话的意思是在原有ModelFORM 方法形成的框中添加一个class样式,但有一个字段就得加一个,比较麻烦
        # }
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs) #重新定义__init__方法,加上super是执行父类给的方法

            #循环找到所有的插件,增加新的class
        for name,field in self.fields.items():  #根据django源码改写
            # if name == "员工姓名":  #可以让某一行不加
            #     continue
            field.widget.attrs = {"class":"form-control","placeholder":"请输入" + field.label}

def 新增员工(request):
    if request.method == "GET":
        form = MyForm()
        return render(request, "user_add.html",{'form':form})
    #用户post提交数据,开始校验
    form = MyForm(data=request.POST)  #取到了所有的传过来的数据
    if form.is_valid(): #  拿着这些数据逐个进行校验
        form.save()   #如果全部填写,保存到数据库
        return redirect('/user/liebiao/')
    #校验失败,在页面显示错误信息,此时已经是填上数据的页面了
    return render(request, "user_add.html", {'form': form})
        #print(form.errors)

修改和删除的标准写法

def 修改员工(request,nid):
    完善哪个员工 = models.员工表.objects.filter(id=nid).first()
    if request.method == "GET":
        form = MyForm(instance=完善哪个员工)
        return render(request, "user_xiugai.html", {'form': form})

    form = MyForm(data=request.POST,instance=完善哪个员工)
    if form.is_valid():
        form.save()
        return redirect('/user/liebiao/')
    return render(request, "user_add.html", {'form': form})


def 删除员工(request,nid):
    models.员工表.objects.filter(id=nid).delete()
    return redirect('/user/liebiao/')

标签:return,form,views,改查,request,django,forms,user,员工
来源: https://www.cnblogs.com/tietiejiang/p/16227104.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有