Django创建图书管理项目(完整版
一、创建项目test1及应用booktest
创建应用booktest
二、安装应用
在test1/settings.py中INSTALLED_APPS下添加应用的名称就可以完成安装
初始项目的INSTALLED_APPS如下图:
在元组中添加一个新的项,当前示例为booktest
'booktest',
三、设计模型
1.定义模型类
- 模型类定义在models.py文件中,继承自models.Model类
- 说明:不需要定义主键列,在生成时会自动添加,并且值为自动增长
- 图书表结构设计:
- 表名:BookInfo
- 图书名称:btitle
- 图书发布日期:bpub_date
- 英雄表结构设计:
- 表名:HeroInfo
- 英雄姓名:hname
- 英雄性别:hgender
- 英雄简介:hcontent
- 所属图书:hbook
- 图书-英雄的关系为一对多
- 根据设计,在models.py中定义模型类如下:
from django.dbimport models
classBookInfo(models.Model):
btitle =models.CharField(max_length=20)
bpub_date =models.DateField()
def __str__(self):
return "%d" % self.pk
classHeroInfo(models.Model):
hname =models.CharField(max_length=20)
hgender =models.BooleanField()
hcontent = models.CharField(max_length=100)
hBook =models.ForeignKey('BookInfo')
def __str__(self):
return "%d" % self.pk
2.迁移
- 默认采用sqlite3数据库
- 迁移前目录结构如下图:
- 迁移由两步完成
- 1.生成迁移文件:根据模型类生成创建表的语句
- 2.执行迁移:根据第一步生成的语句在数据库中创建表
- 生成迁移文件命令:python manage.py makemigrations
- 执行迁移命令:python manage.py migrate
- 迁移后目录结构如下图:
3.数据操作
- 进入项目的shell,进行简单的API操作
- 按ctrl+d或输入quit()可以退出shell
python manage.py shell
- 首先引入booktest/models中的类:
frombooktest.models import BookInfo,HeroInfo
- 查询所有图书信息:
BookInfo.objects.all()
- 因为当前并没有数据,所以返回空列表
- 新建图书对象:
b=BookInfo()
b.btitle="射雕英雄传"
from datetime import date
b.bpub_date=date(1990,1,10)
b.save()
注:多个图书对象需要多次退出多次新建对象,否则覆盖,因为这里数据库是sqlite3
四、视图
1.定义视图
- 打开booktest/views.py文件,定义视图index如下
from django.shortcuts import render
from .models import BookInfo
#首页,展示所有图书
def index(reqeust):
#查询所有图书
booklist = BookInfo.objects.all()
#将图书列表传递到模板中,然后渲染模板
return render(reqeust, 'booktest/index.html', {'booklist': booklist})
#详细页,接收图书的编号,根据编号查询,再通过关系找到本图书的所有英雄并展示
def detail(reqeust, id):
#根据图书编号对应图书
book = BookInfo.objects.get(pk=id)
#将图书信息传递到模板中,然后渲染模板
return render(reqeust, 'booktest/detail.html', {'book': book})
2.配置URLconf
- 1.在booktest/应用下创建urls.py文件,定义代码如下
from django.conf.urls import url
#引入视图模块
from . import views
urlpatterns = [
#配置首页url
url(r'^$', views.index),
#配置详细页url,\d+表示多个数字,小括号用于取值,建议复习下正则表达式
url(r'^(\d+)$',views.detail),
]
- 2.包含到项目中:打开test1/urls.py文件,test1/urls.py文件完整代码如下
fromdjango.conf.urls import include, url
from django.contrib import admin
urlpatterns= [
url(r'^admin/',include(admin.site.urls)),
url(r'^',include('booktest.urls')),
]
五、模板
创建模板
为应用booktest下的视图index创建模板index.html,目录结构如下图:
- 设置查找模板的路径:打开test1/settings.py文件,设置TEMPLATES的DIRS值
'DIRS': [os.path.join(BASE_DIR,'templates')],
定义模板
创建templates/booktest/index.html文件如下
<html>
<head>
<title>首页</title>
</head>
<body>
<h1>图书列表</h1>
<ul>
{#遍历图书列表#}
{%for book in booklist%}
<li>
{#输出图书名称,并设置超链接,链接地址是一个数字#}
<ahref="{{book.id}}">{{book.btitle}}</a>
</li>
{%endfor%}
</ul>
</body>
</html>
创建templates/booktest/detail.html文件如下
<html>
<head>
<title>详细页</title>
</head>
<body>
{#输出图书标题#}
<h1>{{book.btitle}}</h1>
<ul>
{#通过关系找到本图书的所有英雄,并遍历#}
{%for hero inbook.heroinfo_set.all%}
{#输出英雄的姓名及描述#}
<li>{{hero.hname}}---{{hero.hcontent}}</li>
{%endfor%}
</ul>
</body>
</html>
最终文件如下:
六、开发服务器
运行服务器命令:pythonmanage.py runserver
七、在浏览器地址栏中输入网址
http://127.0.0.1:8000/
网页显示效果如下图,视图被成功执行了
Django创建图书管理项目(完整版相关推荐
- Django 创建第一个项目
文章目录 Django 创建第一个项目 Django 管理工具 创建第一个项目 视图和 URL 配置 HelloWorld/HelloWorld/views.py 文件代码: HelloWorld/H ...
- python中型项目---Django框架---图书管理网站的制作-01
图书管理网站的制作详解(个人学习django框架的笔记) 第01号笔记最终成果图: 当前笔记所完成的网站的功能简介: 1 网页从数据库获得图书名称 2 点击新增按钮后增加一本书,当前名为"流 ...
- 从零开始搭建一个web图书管理项目(增删改查功能)
参考资料:https://blog.csdn.net/qq_23994787/article/details/73612870 http://how2j.cn/ 实习第一周,写下一些在建立web项目中 ...
- Django案例——图书管理案例
文章目录 项目开始前 App的建立和路由分配 数据库的建立与连接 模型映射(建立表格) 视图函数 最终的效果图 项目代码连接见:链接:https://pan.baidu.com/s/1mRYMVZkp ...
- 基于Django的图书管理系统设计与实现
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86772475 全套资源下载地址:https://download.csdn.net/d ...
- Django创建应用和项目基本流程学习(二)
创建项目project 创建learning_log项目 在terminal中进入项目路径(manage.py所在文件夹,后面用project_path$表示),输入如下指令: project_pat ...
- 【Django】图书管理
一.实现步骤 (一)创建Django项目 - books 创建Django项目,设置项目位置与项目名 (二)创建并注册应用 - index 1.创建index应用 在项目配置文件里,导入os模块 在控 ...
- Spring+SpringMVC+Mybatis简单整合 图书管理项目 实现增删改查
Spring+SpringMVC+Mybatis项目 tomcat7插件配置 <build><plugins><plugin><groupId>org. ...
- 【Django:图书管理(新)】
(一).创建Django项目books (二).创建并注册应用index 1:创建index应用 导入os模块 2:执行python manage.py startapp index 跑出小火箭 (三 ...
最新文章
- 【Go语言】【12】GO语言的结构体
- 华为数据通信部门怎么样_华为最高级别认证适合小白吗
- 阿里云 Serverless 再升级,从体验上拉开差距
- HTTP 302报文
- 安装使用大key工具rdb_bigkeys
- python如何处理视频_OpenCV-Python系列之视频处理入门
- oracle导出超链接,Oracle Report中加入下载超链接操作方法
- 坐标转换-换带计算(附软件下载)
- astar算法c语言实,Astar寻路算法C++实现
- Android PreferenceScreen介绍
- python处理时间序列非平稳_非平稳时间序列的自相关
- 服务器raid0系统坏了,服务器磁盘阵列raid1、raid0、raid5故障时的数据恢复思路和方法...
- 《论文阅读》PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection
- 【参赛作品71】CentOS 7.9 安装 openGauss 2.1.0 之剥茧抽丝
- linux7分区硬盘,centos7根分区硬盘扩容
- 支付宝《神奇海洋》素材
- 微信小程序获取用户运动步数后端返回-41003
- TPMS胎压芯片选择:英飞凌SP370、英飞凌SP40、飞思卡尔FXTH87
- 香港服务器与国内服务器的比较
- 基于SSM框架的洗车店预约系统的设计与实现
热门文章
- UVa-401-Palindromes(回文)
- Python 实现微信小程序的用户登录
- 4个强大的Linux服务器监控工具[转]
- [Python] NotImplemented 和 NotImplementedError 区别
- 深入浅出InfoPath——让管理员来部署InfoPath表单
- SQL Server 2005之PIVOT/UNPIVOT行列转换(转)
- GARFIELD@01-19-2005
- 为什么分布式一定要有redis,redis的一些优缺点
- android中绘图Paint.setAntiAlias()和Paint.setDither()方法的作用
- 这辆迷你摩托车,很酷!