小白学Django系列:

  • 小白学Django第一天| MVC、MVT以及Django的那些事

  • 小白学Django第二天| Django原来是这么玩的!

  • 小白学Django第三天| 一文带你快速理解模型Model

  • 小白学Django第四天| Django后台管理及配置MySQL数据库

  • 小白学Django第五天| 视图View的初步使用

  • 小白学Django第六天| 一文快速搞懂模板的使用

  • 持续更新中...

主要内容

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

图书案例

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

图一

图二

图三

整体逻辑:

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

一、图一的具体实现:

  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 路径

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

python manage.py runserver

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

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

二、图二的具体实现

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

我们可以通过点击超链接,返回该书籍的 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>
  1. 编写 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>
  1. 配置 details_info 视图函数对应的 url

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

  1. 点击访问页面

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

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

三、图三的具体实现

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

<!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 之间的整合开发。希望大家在学习基础的同时也伴随这一些具体案例。


精彩文章:

  • 漫画:冒泡排序最牛逼的状态!

  • 漫画:最最最最最简单的选择排序

  • 小白学Django第六天| 一文快速搞懂模板的使用

  • 【吐血整理】2019年所有精品文章分类汇总!必收藏!

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

  1. 基于SpringBoot的社区小型图书管理系统的设计与实现

    作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue.SpringBoot和微信小程序).系统定制.远程技术指导. ...

  2. 《Django实战系列》

    这个实战系列暂时就告一段落了,时间和能力的关系,有些地方写的不够清楚明白,代码也没有整理出来.未尽事宜将在以后逐步补全. 希望通过这个系列,你能够掌握使用Django开发一个web应用的基本过程.现在 ...

  3. C语言——小型图书管理系统(课程设计)

    [文末获取资源] 该系统包括以下功能: 01.注册账号 02.登录账号 03.修改密码 04.录入功能 05.添加功能 06.删除功能 07.修改功能 08.浏览功能 09.查询密码 10.排序功能 ...

  4. Python+Django+Mysql个性化图书推荐系统 图书在线推荐系统 基于用户、项目、内容的协同过滤推荐算法(带设计报告)

    Python+Django+Mysql个性化图书推荐系统 图书在线推荐系统 基于用户.项目.内容的协同过滤推荐算法 WebBookRSM.Python python实现协同过滤推荐算法实现 源代码下载 ...

  5. 图书信息管理系统c语言txt,小型图书信息管理系统(C语言)

    一份C语言详细程序(带步骤),关于小型图书信息管理系统的 1.题目 <小型图书信息管理系统>的设计与实现 2.功能 (1)每一条记录包括一本图书的书名.ISBN.作者.出版社.定价.出版日 ...

  6. BUAA_数据结构_2nd_小型图书管理系统

    BUAA_数据结构_2nd_小型图书管理系统 题目描述 小明同学特别喜欢买书看书.由于书较多,摆放杂乱,找起来非常麻烦.这学期小明同学上了数据结构与程序设计课后,决定改变这种状况:用C开发一个小型图书 ...

  7. Python 实战系列-微信或网页远程控制电脑

    Python 实战系列-微信或网页远程控制电脑 本系列课程为Python实战系列课程:使用微信控制电脑,使用Python的Web框架Flask搭建网页, 并使用网页控制电脑:使用wxPython编写图 ...

  8. 基于docker搭建django的web图书管理系统

    一.概要 本次将使用docker搭建一个基于django框架的图书管理系统,本次用到的技术包括: docker基本命令: 数据卷挂载: dockerfile编写: docker网络技术: django ...

  9. BUAA小型图书管理系统

    [问题描述] 小明同学特别喜欢买书看书.由于书较多,摆放杂乱,找起来非常麻烦.这学期小明同学上了数据结构与程序设计课后,决定改变这种状况:用C开发一个小型图书管理系统.系统中包含的图书信息有:书名.作 ...

最新文章

  1. win7多国语的安装说明
  2. Google 发布浏览器3D插件 O3D API
  3. badboy 不支持html5,html5_iframe.htm
  4. @ngrx入坑angular的schema,爽的一逼!
  5. linux中gedit中定义变量,linux中的gedit
  6. linux下zookeeper启动命令,For Linux Zookeeper客户端命令行操作指令
  7. python加密解密算法_Python基于DES算法加密解密实例
  8. 【CSS基础笔记】——盒模型、块级元素、行内元素、浮动、对齐、定位
  9. 相同数据源情况下,使用Kafka实时消费数据 vs 离线环境下全部落表后处理数据,结果存在差异...
  10. 常用技术面试题(软件测试)
  11. STAR法则的理解及事例
  12. 情绪满盈,心猿似马,人生80%的时间都在自我内耗
  13. 百度AI开发者语音转文字python实现
  14. GNOME 平台的2D图形编程(GTK,GDK,Cairo...) 简介 [转]
  15. 思科access-list 1 permit 1.1.1.0 0.0.254.0 //允许第三位为奇数的路由
  16. 伺服驱动器cn1引脚定义_PCI-9014端子板DIN-68S和安川驱动器(SGDV-R90A01A002000)接线图...
  17. 小功率隔离型DC/DC高压电源模块
  18. 初心易得, 始终难守
  19. 大学四年java学习的经验及心得体会
  20. #BDA#笔记#业务知识:常见行业业务模式指标4在线教育行业

热门文章

  1. mac vi vim常用快捷键
  2. 2020美赛D题翻译
  3. 盘符移动后,启动靠谱天天模拟器和mumu模拟器报错,报错信息大概为没有设置VT
  4. Python变量和简单数据类型
  5. 两个数字的交换(指针的使用)
  6. Android之OkDownload里面的OKHttp提示java.lang.IllegalArgumentException: Invalid URL port: “image“
  7. 分享我每天的健康养生好习惯
  8. 过分了,别人用来做桌面应用开发,这家伙却用来撩妹(6)-不正经的隐形弹窗
  9. 数据结构六种常见的排序方法(超详细图解内附代码)
  10. 小米2不能连电脑 XP系统无法安装MTP设备驱动的终极解决方法