十二、Django之模板的继承+用户列表

news/2025/2/19 10:24:18

模板的继承

新建layout.html:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap-3.4.1/css/bootstrap.min.css' %}">
    <style>
        .navbar{
            border-radius: 0;
        }
    </style>
</head>
<body>
    <nav class="navbar navbar-default">
        <div class="container">
            <div class="nav-header">
                <button type="button" class="navbar-toggle collapse" data-toggle="collapse"
                data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar">Toggle navigation</span>
                    <span class="icon-bar">Toggle navigation</span>
                    <span class="icon-bar">Toggle navigation</span>
                </button>
                <a class="navbar-brand" href="#">联通用户管理系统</a>
            </div>
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav">
                    <li><a href="/list">部门管理</a></li>
                    <li><a href="#">Link</a></li>
                </ul>
                <ul class="nav navbar-nav navbar-right">
                    <li><a href="#">登录</a></li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                        aria-expanded="false">shanshan<span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#">个人资料</a></li>
                            <li><a href="#">我的信息</a></li>
                            <li role="separator" class="divider"></li>
                            <li><a href="#">注销</a></li>
                        </ul>
                    </li>

                </ul>
            </div>
        </div>
    </nav>

    <div>
        {% block content %}{% endblock %}
    </div>

    <srcipt src="{% static 'js/jquery-3.6.0.min.js' %}"></srcipt>
    <script src="{% static 'plugins/bootstrap-3.4.1/js/bootstrap.min.js' %}"></script>
</body>
</html>
 

index.html

简单的demo,用来测试模板继承

{% extends 'layout.html' %}

{% block content %}
    <h1>首页</h1>
{% endblock %}

depart_list.html:

{% extends 'layout.html' %}
{% block content %}
    <div class="container">
        <div style="margin-bottom: 10px">
            <a class="btn btn-success" href="/depart/add/">
                <span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>
                新建部门
            </a>
        </div>

        <div class="panel panel-default">
            <div class="panel-heading">
                <span class="glyphicon glyphicon-th-list" aria-hidden="true"></span>
                部门列表
            </div>
            <table class="table table-bordered">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>名称</th>
                        <th>操作</th>
                    </tr>
                </thead>
                <tbody>
                {% for obj in queryset %}
                    <tr>
                        <th>{{ obj.id }}</th>
                        <td>{{ obj.title }}</td>
                        <td>
                            <a class="btn btn-primary btn-xs" href="/depart/{{ obj.id }}/edit/">编辑</a>
                            <a class="btn btn-danger btn-xs" href="/depart/delete/?nid={{ obj.id }}">删除</a>
                        </td>
                    </tr>
                {% endfor %}
                </tbody>
            </table>
        </div>
    </div>
{% endblock %}

depart_add.html:

{% extends 'layout.html' %}
{% block content %}
    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">新建部门</h3>
            </div>
            <div class="panel-body">
                <form method="post">
                    {% csrf_token %}
                    <div class="form-group">
                        <label>标题</label>
                        <input type="text" class="form-control" placeholder="标题" name="title">
                    </div>

                         <button type="submit" class="btn btn-primary">提 交</button>
                </form>
            </div>
        </div>
    </div>
{% endblock %}

depart_edit.html:

{% extends 'layout.html' %}
{% block content %}
    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">
                <h3 class="panel-title">修改部门</h3>
            </div>
            <div class="panel-body">
                <form method="post">
                    {% csrf_token %}
                    <div class="form-group">
                        <label>标题</label>
                        <input type="text" class="form-control" placeholder="标题" name="title" value="{{ row_object.title }}">
                    </div>

                     <button type="submit" class="btn btn-primary">提 交</button>
                </form>
            </div>
        </div>
    </div>
{% endblock %}

用户列表:

增加urls.py

python">path("user/list/", views.user_list),

增加views.py(get_字段_display())

python">def user_list(request):
    queryset = models.UserInfo.objects.all()
    '''
    使用python语法直接获取想要的数据
    for obj in queryset:
        print(obj.name, obj.create_time.strftime("%Y-%m-%d-%H-%M"), obj.get_gender_display(), obj.depart.title)
    '''
    return render(request, "user_list.html", {"queryset": queryset})

关于获得实际的性别字段:

Django自动封装了一个方法,get_字段_display(),会根据我们在models.py里自定义的元组,
一般形式为(数据库的值,实际想显示的值)。显示数据库的值实际映射的中文。

关于获得关联的表的实际部门名称:

当然可以自己写映射,譬如

temp = models.Department.objects.filter(id=obj.depart_id).first().title

但是Django自动封装了类似一个方法,只要我们在models.py里写了

depart = models.ForeignKey(to="Department", to_field="id", on_delete=models.CASCADE)

那么他会根据id自动去关联的表中获取那一行数据的depart对象

新建user_list.html(模板语法中的日期格式化)

{% extends 'layout.html' %}
{% block content %}
    <div class="container">
        <div style="margin-bottom: 10px">
            <a class="btn btn-success" href="#">
                <span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>
                新建用户
            </a>
        </div>

        <div class="panel panel-default">
            <div class="panel-heading">
                <span class="glyphicon glyphicon-th-list" aria-hidden="true"></span>
                用户列表
            </div>
            <table class="table table-bordered">
                <thead>
                    <tr>
                        <th>ID</th>
                        <th>姓名</th>
                        <th>密码</th>
                        <th>年龄</th>
                        <th>余额</th>
                        <th>入职时间</th>
                        <th>性别</th>
                        <th>所属部门</th>
                        <th>操作</th>

                    </tr>
                </thead>
                <tbody>
                 {% for obj in queryset %}
                    <tr>
                        <th>{{ obj.id }}</th>
                        <td>{{ obj.name }}</td>
                        <td>{{ obj.password }}</td>
                        <td>{{ obj.age }}</td>
                        <td>{{ obj.account }}</td>
                        <td>{{ obj.create_time|date:"Y-m-d" }}</td>
                        <td>{{ obj.get_gender_display }}</td>
                        <td>{{ obj.depart.title }}</td>
                        <td>
                            <a class="btn btn-primary btn-xs" href="#">编辑</a>
                            <a class="btn btn-danger btn-xs" href="#">删除</a>
                        </td>
                    </tr>
                {% endfor %}
                </tbody>
            </table>
        </div>
    </div>
{% endblock %}

测试

文章来源:https://blog.csdn.net/zhiaidaidai/article/details/132644175
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/5065821.html

相关文章

Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作方法

文献计量学是什么&#xff1f;&#xff1f;&#xff1f;最常用的工具是什么&#xff1f;优势是什么&#xff1f;&#xff1f; 文献计量学是指&#xff1a;用数学和统计学的方法&#xff0c;定量地分析一切知识载体的交叉科学。 它是集数学、统计学、文献学为一体&#xff0c;…

在2023年使用Unity2021从Built-in升级到Urp可行么

因为最近在做WEbgl平台&#xff0c;所以某些不可抗力原因&#xff0c;需要使用Unity2021开发&#xff0c;又由于不可明说原因&#xff0c;想用Urp&#xff0c;怎么办&#xff1f; 目录 创建RenderAsset 关联Asset 暴力转换&#xff08;Menu->Edit&#xff09; 单个文件…

c#+Mysql房屋租赁管理系统

一、引言 随着房价的不断升高&#xff0c;人们对房屋的需求越来越难以满足&#xff0c;对于一些在外地工作的人来说租房子成为了一种常态&#xff0c;因此出现了越来越多的房屋中介&#xff0c;而对于房屋中介而言&#xff0c;管理日益增加租户的信息和房产的信息成了一个至关…

计组—— I/O系统

&#x1f4d5;&#xff1a;参考王道课件 目录 一、I/O系统的基本概念 1.什么是“I/O”&#xff1f; ​编辑2.主机如何和I/O设备进行交互&#xff1f; 3.I/O控制方式 &#xff08;1&#xff09;程序查询方式 &#xff08;2&#xff09;程序中断方式 &#xff08;3&#x…

Hive【Hive(四)函数-单行函数】

函数 函数简介 方便完成我们一些复杂的操作&#xff0c;就好像我们 Spark 中的 UDF 函数&#xff0c;避免用户反复写逻辑。 Hive 提供了大量的内置函数&#xff0c;主要可以分为以下几类&#xff1a; 单行函数聚合函数炸裂函数窗口函数 下面的命令可以查看内置函数的相关…

当我们做后仿时我们究竟在仿些什么(一)

数字芯片设计流程中有一个步骤叫门级网表仿真。所谓门级&#xff08;gate level&#xff09;&#xff0c;是和RTL&#xff08;register transfer level&#xff09;相对应的。所谓网表&#xff08;netlist&#xff09;&#xff0c;就是一堆基础单元&#xff08;比如standard ce…

【共享模型-----管程】

文章目录 1. 为什么会出现线程安全问题2. synchronized 解决方案2.1 线程八锁 3. 变量的线程安全分析3.1 局部变量线程安全分析3.2 常见线程安全类 1. 为什么会出现线程安全问题 一段代码块内如果存在对共享资源的多线程读写操作&#xff0c;称这段代码块为临界区 共享资源&a…

基于Matlab求解高教社杯全国大学生数学建模竞赛(CUMCM2004A题)-奥运会临时超市网点设计(附上源码+数据)

文章目录 题目思路源码数据下载 题目 2008年北京奥运会的建设工作已经进入全面设计和实施阶段。奥运会期间&#xff0c;在比赛主场馆的周边地区需要建设由小型商亭构建的临时商业网点&#xff0c;称为迷你超市&#xff08;Mini Supermarket, 以下记做MS&#xff09;网&#xf…