IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 自动化测试平台搭建系列(13)——Django框架中的模型(model)及用户的登录注册(下篇) -> 正文阅读

[Python知识库]自动化测试平台搭建系列(13)——Django框架中的模型(model)及用户的登录注册(下篇)

文章目录


本篇练习代码已上传码云:
https://gitee.com/yinjiangbing/django_study_model_two.git
上篇写到了数据库的建表,改名及数据库的增和查的使用
这篇就借助登录注册再把数据库的删除和更新说一下
首先说一下删除部分
先在视图里写一个删除函数delete,和配置路由

返回来看下show.html
在这里插入图片描述

这个页面有删除按钮,想要实现的是我点击删除按钮能调用删除函数,执行删除动作,然后删除数据库的对应的信息,提交表单
show页面的这个删除是针对当前页面的用户做删除
为了防止误删操作,这里加一个弹窗提示,可以给这个删除添加一个事件,使用confirm()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

刚才点击删除时没有反应,看了下base.html,没有把jQuerycdn带上,加上之后就好了(cdn地址:https://www.bootcdn.cn/jquery/)
在这里插入图片描述

所以这里可以通过布尔类型来判断
首先来看下js里面走路由的两种方法
在这里插入图片描述

在这里我给delete函数随便给个返回值,看下效果
在这里插入图片描述
在这里插入图片描述
可以正常访问到这个路由
这个路由就等效于走的我user/delete
这时候我需要给他传一个用户id,要不一下全给删了,所以后面肯定要带一个id,形式就是user/delete?id=…这样的(get)
所以这里就要在它后面拼接一个id

window.location.href='{% url 'user:delete' %}?id=1'

我这里给写死id=1了,后面肯定不能这么写,要获取到id的值

这时候去继续完善delete函数(删除逻辑)
首先获取到id值

id = request.GET.get('id')

然后去编辑show.html
在这里插入图片描述
var id = $(this).attr(‘tag’);
这句后面有个符号刚才漏掉了
在这里插入图片描述
这样就取过来了
那这里js部分就整完了,源码如下:

    <script>
        $('.del').click(function (){
            var flag = window.confirm('确定要删除此用户吗?')
            //console.log(flag)
            if(flag){
                var id = $(this).attr('tag');
                //走删除路由(两种方法)
                //方法一:
                //window.location.href='/user/delete'
                //方法二:
                window.location.href='{% url 'user:delete' %}?id='+id;
            }
        })
    </script>

接下来就开始专注写删除逻辑了

# 用户删除
def delete(request):
    # 先得到一个id的值
    id = request.GET.get('id')
    # 根据id去数据库中执行查询
    user = User.objects.get(pk=id)
    # 判断是否找到该用户
    if user:
        # 查询到用户,执行删除
        user.delete()
        # 删除完之后再回到当前页面
        return redirect(reverse('user:show'))
    else:
        return HttpResponse('删除失败!')

然后就试一下
在这里插入图片描述
在这里插入图片描述
删除test02
在这里插入图片描述
可以实现预期功能!
删除可以了,拿下来就是更新部分(也就是修改用户信息)
这里需要有一个专门的更新页面,在模板user下再建一个update.html
在这里插入图片描述
把页面写出来
这里只更新了用户名和手机号,后面会添加密码等信息

{% extends 'base.html' %}
{% block title %}
    用户更新
{% endblock %}

{% block mycss %}
    <style>
    #error{
        color: red;
    }
    </style>
{% endblock %}
{% block content %}
    {% if msg %}
    <div class="alert alert-warning alert-dismissible" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <strong>{{ msg }}</strong>
    </div>
    {% endif %}
    <form class="form-horizontal" action="{% url 'user:register' %}" method="post">
    {% csrf_token %}
      <div class="form-group">
        <label for="inputEmail3" class="col-sm-2 control-label">用户名:</label>
        <div class="col-sm-2">
          <input type="text" class="form-control" placeholder="username" name="username" value="{{ user.username }}">
        </div>
      </div>
      <div class="form-group">
        <label for="inputEmail3" class="col-sm-2 control-label">手机号码:</label>
        <div class="col-sm-2">
          <input type="text" class="form-control" placeholder="phone" name="phone" value="{{ user.phone }}">
        </div>
      </div>
      <div class="form-group">
          <div class="col-sm-offset-2 col-sm-10">
              <div class="checkbox" name="is_delete">
                  <label>
                      <input type="checkbox"> 用户是否删除
                  </label>
              </div>
          </div>
      </div>
      <div class="form-group">
          <div class="col-sm-offset-2 col-sm-10">
              <button type="submit" class="btn btn-info">用户更新</button>
          </div>
      </div>
    </form>
{% endblock %}

在这里插入图片描述

首先我得先把原来的数据拿过来,不然我都不知道要更新的是谁
先把update逻辑写一下

# 用户更新
def update(request):
    if request.method == 'POST':
        pass
    else:
        id = request.GET.get('id')
        # 数据库查找
        user = User.objects.get(pk=id)
        if user:
            return render(request, 'user/update.html', {'user': user})
        else:
            return redirect(reverse('user:show'))

这里只是写了逻辑和页面,数据还没拿过来,这时候只要去页面里拿数据往里放就行,以value值的形式放在表单上
在这里插入图片描述
废话不多说了,直接上代码:
views.py

# 用户更新
def update(request):
    if request.method == 'POST':
        id = request.POST.get('id')
        username = request.POST.get('username')
        phone = request.POST.get('phone')
        is_delete = request.POST.get('is_delete')
        # 查找要更新的用户
        user = User.objects.get(pk=id)
        # 更新
        # 方式一:
        # user.username = username
        # user.phone = phone
        # user.is_delete = bool(is_delete) # 强转成布尔类型
        # # 提交保存
        # user.save()
        # # 更新成功返回到show页面,此时show页面展示的是更新后的信息
        # return redirect(reverse('user:show'))
        # 方式二:
        # 判断is_delete的值,做反向更改
        if is_delete == 'True':
            is_delete = False
        elif is_delete == 'False':
            is_delete = True
        User.objects.filter(id=id).update(username=username, phone=phone, is_delete=bool(is_delete))
        return redirect(reverse('user:show'))

    else:
        id = request.GET.get('id')
        # 数据库查找
        user = User.objects.get(pk=id)
        if user:
            return render(request, 'user/update.html', {'user': user})
        else:
            return redirect(reverse('user:show'))

update.html

{% extends 'base.html' %}
{% block title %}
    用户更新
{% endblock %}

{% block mycss %}
    <style>
    #error{
        color: red;
    }
    </style>
{% endblock %}
{% block content %}
    {% if msg %}
    <div class="alert alert-warning alert-dismissible" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <strong>{{ msg }}</strong>
    </div>
    {% endif %}
    <form class="form-horizontal" action="{% url 'user:update' %}" method="post">
    {% csrf_token %}
      <div class="form-group">
        <label for="inputEmail3" class="col-sm-2 control-label">用户名:</label>
        <div class="col-sm-2">
          <input type="text" class="form-control" placeholder="username" name="username"
                 value="{{ user.username }}" id="username">
        </div>
      </div>
      <div class="form-group">
        <label for="inputEmail3" class="col-sm-2 control-label">手机号码:</label>
        <div class="col-sm-2">
          <input type="text" class="form-control" placeholder="phone" name="phone" value="{{ user.phone }}" id="phone">
        </div>
      </div>
      <div class="form-group">
          <div class="col-sm-offset-2 col-sm-10">
              <div class="checkbox" name="is_delete">
                  <label>
                      <input type="checkbox" name="is_delete" {% if user.is_delete == 1 %} checked {% endif %}
                             value="{{ user.is_delete }}" id="is_delete"> 用户是否删除
                  </label>
              </div>
          </div>
      </div>
      <input type="hidden" name="id" value="{{ user.id }}">
      <div class="form-group">
          <div class="col-sm-offset-2 col-sm-10">
              <button type="submit" class="btn btn-info">用户更新</button>
          </div>
      </div>
    </form>
{% endblock %}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:05:38  更:2021-09-18 10:06:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 15:37:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计