首页 > 其他分享 >【玩转全栈】----用户管理案例

【玩转全栈】----用户管理案例

时间:2025-01-23 18:27:17浏览次数:3  
标签:info name 删除 req list ---- 全栈 html 玩转

目录

案例需求:

成果显示:

源码展示:

部分源码解释及注意

1、info_list.html文件

2、info_add.html文件

3、models.py文件

4、views.py文件


          经过前面的学习,相信您对Django、MySQL,以及他们之间的连接已经非常熟悉了,本文是一个关于Django、MySQL的一个小案例

案例需求:

        设计一个表,包括姓名、密码、年龄,需要在页面上显示表中信息,并增加添加和删除按钮,点击添加按钮跳转至添加页面,输入内容后表中自动更新,点击删除后,自动删除该行表内容。

功能很简单,大家可以自己先试试

成果显示:

显示数据表

添加数据:

点击提交,数据库更新:

删除数据:

点击删除更新数据表:

源码展示:

url.py文件

# 用户管理
path("info/list/",views.info_list),
# 添加用户
path("info/add/",views.info_add),
# 删除用户
path("info/delete/",views.info_delete),

models.py文件

class UserInfo(models.Model): 
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()

views.py文件

from app01.models import Department,UserInfo

def info_list(requests):
    # 1、获取数据库中所有的用户信息
    data_list = UserInfo.objects.all()
    return render(requests,"info_list.html",{"data_list":data_list})

# 添加用户
def info_add(req):
    if req.method == "GET":
        return render(req,"info_add.html")
    # 获取用户提交的数据
    name = req.POST.get('name')
    password = req.POST.get('pwd')
    age = req.POST.get('age')
    # 添加到数据库
    UserInfo.objects.create(name=name,password=password,age=age)
    # 正常跳转到其他页面需要在前面加一些东西,本机网址就不用加
    return redirect("/info/list")

# 删除用户
def info_delete(req):
    nid = req.GET.get('nid')
    UserInfo.objects.filter(id=nid).delete()
    return redirect("/info/list")

info_list.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>用户表</h1>
<!--添加一个a标签按钮,实现跳转-->
<a href="/info/add/">添加</a>
<table border="1">
    <thead>
        <tr>
            <th>ID</th>
            <th>姓名</th>
            <th>密码</th>
            <th>年龄</th>
            <th>删除</th>
        </tr>
    </thead>
    <tbody>
    {% for item in data_list %}
        <tr>
            <td>{
  
  {item.id}}</td>
            <td>{
  
  {item.name}}</td>
            <td>{
  
  {item.password}}</td>
            <td>{
  
  {item.age}}</td>
            <td>
                <a href="/info/delete/?nid={
  
  {item.id}}">删除</a>
            </td>
        </tr>
    {% endfor %}
    </tbody>
</table>

</body>
</html>

info_add.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>添加用户</h1>
    <form method="POST">
        {% csrf_token %}
        <input type="text" name="name" placeholder="用户名">
        <input type="text" name="pwd" placeholder="密码">
        <input type="text" name="age" placeholder="年龄">
        <input type="submit" value="提交">
    </form>
</body>
</html>

部分源码解释及注意

1、info_list.html文件

添加了一个a,标签,点击跳转到添加用户页面,实现页面间的跳转

<a href="/info/add/">添加</a>

使用for循环获取数据表中的id、name、password、age等内容

{% for item in data_list %}
        <tr>
            <td>{
  
  {item.id}}</td>
            <td>{
  
  {item.name}}</td>
            <td>{
  
  {item.password}}</td>
            <td>{
  
  {item.age}}</td>
            <td>
                <a href="/info/delete/?nid={
  
  {item.id}}">删除</a>
            </td>
        </tr>
{% endfor %}

添加了一个删除按钮,点击后跳转至对应行的id删除页面,自动删除,本机上输入url路径可以不用输入前面的http://127.0.0.1:8000/

/info/delete/?nid={
  
  {item.id}}

2、info_add.html文件

输入框记得添加Django独有的安全验证

{% csrf_token %}

3、models.py文件

创建的表和之前的一样,大家也可以自己设计个表

4、views.py文件

记得引入建立的数据类

from app01.models import UserInfo

info_list函数用来获取数据库内容,并传给html文件

def info_list(requests):
    # 1、获取数据库中所有的用户信息
    data_list = UserInfo.objects.all()
    return render(requests,"info_list.html",{"data_list":data_list})

记得settings中要连接数据库!

info_add函数对应表单提交的POST请求,通过变量接收,再用mysqlclient写代码存入数据库中,再重定向至数据表显示页面

def info_add(req):
    if req.method == "GET":
        return render(req,"info_add.html")
    # 获取用户提交的数据
    name = req.POST.get('name')
    password = req.POST.get('pwd')
    age = req.POST.get('age')
    # 添加到数据库
    UserInfo.objects.create(name=name,password=password,age=age)
    # 正常跳转到其他页面需要在前面加一些东西,本机网址就不用加
    return redirect("/info/list")
info_delete函数获取删除id,对id行进行删除,然后重定向至显示页面
def info_delete(req):
    nid = req.GET.get('nid')
    UserInfo.objects.filter(id=nid).delete()
    return redirect("/info/list")

        这里需要注意,删除的逻辑是:

在info_list.html中加入了删除列,在点击删除按钮后,会发送对应id的删除请求,例如:

/info/delete/?nid=1

通过url传参,将要删除的id值传回视图函数,接收后执行数据库删除命令,再重定向到显示页面,从而实现几乎实时的删除和显示。

本次分享就到这儿了,期待您的三连!!!

标签:info,name,删除,req,list,----,全栈,html,玩转
From: https://blog.csdn.net/2403_83182682/article/details/144923753

相关文章

  • ES6一些常用语法总结
    1.数组、对象的匹配赋值【解构赋值】let[a,b,c]=[1,2,3]//可以用于变量值之间的转换leta=1;letb=2;[a,b]=[b,a]//成功切换let{name,age}={name:"fanqi",age:27}; //变量名需要和对象的属性名称相对应2.模版字符串leta="中国";letb=`我是${a}人`......
  • 使用 PHP 和 Tesseract OCR 实现验证码识别
    验证码是一种常见的验证手段,用于区分用户和自动化程序。通过OCR(光学字符识别)技术,我们可以实现对验证码的自动化识别。在本文中,我们将使用PHP和TesseractOCR引擎构建一个验证码识别程序。环境准备安装TesseractOCR引擎首先,你需要安装TesseractOCR引擎,这是实现光学......
  • PassGet:一款使用Go语言编写的用于后渗透测试阶段提取Windows平台下常见的应用程序
    免责声明仅限用于技术研究和获得正式授权的攻防项目,请使用者遵守《中华人民共和国网络安全法》,切勿用于任何非法活动,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律连带责任项目介绍PassGet是一款使用Go语言编写的用于后渗透测试阶段提取Windo......
  • 【Milvus向量数据库】AI应用开发
    一、Milvus介绍上一小节中,全面介绍了向量和向量数据库,今天详细介绍下其中比较出名的开源数据库Milvus。希望对你有帮助Milvus是一个开源的、高性能的向量数据库,专为海量向量数据的快速检索而设计。在人工智能、计算机视觉、推荐系统和其他需要处理大规模向量数据的领域有着广......
  • 循环结构程序设计
    循环语句1、用while语句实现循环1.1while语句的一般形式如下1.2流程图如下1.3while循环举例2、用do-while语句实现循环2.1do-while语句的一般形式和执行过程2.2流程图如下3、for循坏3.1for语句的一般形式和执行过程3.2流程图如下3.3for循环语句举例4、循环语......
  • 2025年1月有什么好用的便宜性价比高的的语音卡、流量卡推荐?
    之前,因为自己网站变现的问题,找了很多变现渠道,有了解到流量卡这个业务,并花了很长时间研究。最近,因为一些工作的原因,需要打的电话比较多,加上之前有了解过流量卡这一块,所以就在想,有没有语音卡呢?找了一堆,发现都是流量卡产品,可用的语音卡比较少,资费最低都是0.1元/分钟或者接近0.1......
  • springboot运动场地的预约系统-计算机毕业设计源码48258
    目 录摘要1绪论1.1研究背景1.2 研究意义1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1用户登录流程2.2.2 数据删除流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4 系统用例分析2.5本章小结3 系统......
  • springboot在线吉他配套服务系统-计算机毕业设计源码53451
    目录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1数据流程2.2.2业务流程2.3系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4系统用例分析2.5本章小结3系统总体......
  • 最大最全鸿蒙进阶班一站式包就业学习(1)
    鸿蒙开发模拟器的安装新版本编译工具和模拟器的下载地址链接:百度网盘-链接不存在提取码:fjjwwindows编辑器1安装编辑器2配置SDK1找到自己SDK的目录文件-设置-SDK1把老师的SDK文件拷贝到该目录下1最后点击确认3新建项目4手动更新项目插件......
  • Oracle数据库归档满,无法连接数据库
    报错如下:查看日志,导致异常连接的问题是归档日志满导致的解决方案:1、可以进入rman使用rman删除归档su-oracleexportORACLE_SID=orclrmantarget/crosscheckARCHIVELOGall;deletenopromptexpiredarchivelogall;deletenopromptarchivelogallcompletedb......