Django实战小型图书人物信息网页(MVT的综合运用)

简介: 本文主要总结 Django 系列前面所学的知识,将前面所学的知识通过一个小案例结合起来,让大家对于 MVT 模式更加的熟练。
+关注继续查看

微信图片_20220217190938.jpg


| 小白学Django系列:



| 主要内容

本文主要总结 Django 系列前面所学的知识,将前面所学的知识通过一个小案例结合起来,让大家对于 MVT 模式更加的熟练。


| 图书案例

之前我们所学的知识都是基于BookManager的案例来的,这次我们主要实现两个界面,大家可以先看一下。

微信图片_20220217191240.png

图一

微信图片_20220217191243.png

图二

微信图片_20220217191247.png

图三


整体逻辑:


首先我们进入的是图一的界面,在图一的界面我们可以点击每一本书,点击每一本书后,我们可以访问相关书籍的任务信息,如果这本书在数据库中有数据则展示数据,如果没有数据,那么就显示"无相关信息"


一、图一的具体实现:

  1. 创建 books.html 文件
  2. 在 view.py 中编写 show_books 函数


show_books 函数主要用来获取书籍信息

def show_books(request):
    # 1.通过M来查找数据库中的书籍信息
    book = BookInfo.objects.all()
    # 2.把数据返回HTML文件
    return render(request, "Book/books.html", {"books": book})

获取书籍信息的方法很简单,在我 Django 系列文章中有详细写过。


  1. 编写 books.html 文件


因为我们只是为了巩固之前学的 Django 知识,所以前端我们写的比较简陋

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Show Books</title>
</head>
<body>
<h1>图书信息如下:</h1>
<ul>
    {% for i in books %}
        <li><a href="{{ i.id }}">{{ i.book_title }}</a></li>
    {% endfor %}
</ul>
</body>
</html>

如果相关的语法知识看不懂,建议大家去公众号菜单栏底部找 Django 系列文章看看。


  1. 配置相关 URL


我们需要去url.py 文件去配置 show_books 视图函数的 url 路径

微信图片_20220217192048.jpg

  1. 配置完成后,我们可以运行服务器:
python manage.py runserver


最后可以看到显示和图一是一样的

微信图片_20220217192204.png

当然这里面的数据我可能和你的不一样,有关于数据的增删改查,我在之前文章中也详细写过了。


二、图二的具体实现

有关于图二的实现可能会稍显复杂,我们再来回顾一下思路。我们通过点击图一的超链接跳转到该书籍的人物介绍页面,然后在图二界面显示出人物介绍信息


我们可以通过点击超链接,返回该书籍的 id 给后端的视图函数并且跳转至/id 界面,然后在视图函数中根据返回的 id 来查询相关书籍人物信息,这样就非常的简单了。


  1. 创建 details.html 文件
  2. 此时的 books.html 文件代码应该如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Show Books</title>
</head>
<body>
<h1>图书信息如下:</h1>
<ul>
    {% for i in books %}
        <li><a href="{{ i.id }}">{{ i.book_title }}</a></li>
    {% endfor %}
</ul>
</body>
</html>

3.编写 details_info 视图函数

def details_info(request, cid):
    # 1.根据id来查找书籍信息
    book = BookInfo.objects.get(id=cid)
    # 2.根据书籍信息找到人物信息
    people = book.people_set.all()
    # 3.使用模板
    return render(request, "Book/details.html",{'book': book, 'people':people})

整体的代码相信大家能够轻易理解,首先通过 id 返回该 id 所对应的 BookInfo 对象,然后根据该对象所关联的任务信息,来获取相关信息。


  1. 编写 details.html 文件
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>people_info</title>
</head>
<body>
<h1>{{ book.book_title }}:</h1>

    {% for i in people %}
        <li>人物名称:{{ i.name }}</li>
        年龄:{{ i.age }}
    {% endfor %}
</ul>
</body>
</html>

5.配置 details_info 视图函数对应的 url

微信图片_20220217192537.jpg

此处我们运用了转换器,将 id 通过转换器传送给后端视图函数,这里需要注意,转换器中的变量名需要和相应视图函数中参数的变量名称相同,例如这里的 cid。否则会报错!


  1. 点击访问页面

微信图片_20220217192542.png

可以发现我们实现了图二的功能。


但是大家有没有想过,如果我没有给这本书相关的人物信息,那岂不是返回一个空白给我?所以接下来教大家一个很简单的方法来实现图三的功能。


三、图三的具体实现


其实实现起来非常简单,只需要两行代码即可解决。

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>people_info</title>
</head>
<body>
<h1>{{ book.book_title }}:</h1>

    {% for i in people %}
        <li>人物名称:{{ i.name }}</li>
        年龄:{{ i.age }}
    {% empty %}
        <li>无相关信息</li>
    {% endfor %}
</ul>
</body>
</html>

大家可以看到{% empty %} ,它的作用就是如果当前对象 i 是为空的话,那么它就会执行它下面的代码,如果不为空则不执行。


| 总结

在前面的文章中,我们已经大概介绍并且简单的使用了 MVT 的相关知识。我们也通过这个案例来进一步巩固 MVT 之间的整合开发。希望大家在学习基础的同时也伴随这一些具体案例。



相关文章
|
10天前
|
存储 前端开发 关系型数据库
Django 项目 MVT 结构
Django 项目 MVT 结构
16 1
|
10天前
|
Python
如何在 Django 中使用 MVT 创建基本项目?
如何在 Django 中使用 MVT 创建基本项目?
8 0
|
1月前
|
开发框架 前端开发 数据库
01 Django入门 - MVT框架介绍
01 Django入门 - MVT框架介绍
18 0
|
5月前
|
SQL 前端开发 JavaScript
基于python+django的旅游信息网站-旅游景点门票管理系统
该系统是基于python+django开发的旅游景点门票管理系统。是给师弟做的课程作业。大家学习过程中,遇到问题可以在github咨询作者
68 0
|
7月前
|
数据库 Python
django drf 实现只有超级用户才能注册账号(涉及自定义权限permissions,获取token信息解析token信息)
django drf 实现只有超级用户才能注册账号(涉及自定义权限permissions,获取token信息解析token信息)
|
Python
Django用户注册、登录、编辑信息、删除(简易版)
Django用户注册、登录、编辑信息、删除(简易版)
148 0
|
中间件 开发工具 git
【Django | 开发】面试招聘信息网站(配置中间件记录响应耗时日志)
【Django | 开发】面试招聘信息网站(配置中间件记录响应耗时日志)
【Django | 开发】面试招聘信息网站(配置中间件记录响应耗时日志)
|
关系型数据库 MySQL 数据库
【Django | 开发】 面试招聘信息网站(为已有数据库生成管理后台)
【Django | 开发】 面试招聘信息网站(为已有数据库生成管理后台)
【Django | 开发】 面试招聘信息网站(为已有数据库生成管理后台)
|
安全 Python
【Django | 开发】面试招聘信息网站(美化admin站点&添加查看简历详情链接
【Django | 开发】面试招聘信息网站(美化admin站点&添加查看简历详情链接
【Django | 开发】面试招聘信息网站(美化admin站点&添加查看简历详情链接
|
数据库 数据安全/隐私保护 Python
【Django | 开发】面试招聘信息网站(用户登录注册&投在线递简历)
【Django | 开发】面试招聘信息网站(用户登录注册&投在线递简历)
【Django | 开发】面试招聘信息网站(用户登录注册&投在线递简历)
推荐文章
更多