一、创建项目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创建图书管理项目(完整版相关推荐

  1. Django 创建第一个项目

    文章目录 Django 创建第一个项目 Django 管理工具 创建第一个项目 视图和 URL 配置 HelloWorld/HelloWorld/views.py 文件代码: HelloWorld/H ...

  2. python中型项目---Django框架---图书管理网站的制作-01

    图书管理网站的制作详解(个人学习django框架的笔记) 第01号笔记最终成果图: 当前笔记所完成的网站的功能简介: 1 网页从数据库获得图书名称 2 点击新增按钮后增加一本书,当前名为"流 ...

  3. 从零开始搭建一个web图书管理项目(增删改查功能)

    参考资料:https://blog.csdn.net/qq_23994787/article/details/73612870 http://how2j.cn/ 实习第一周,写下一些在建立web项目中 ...

  4. Django案例——图书管理案例

    文章目录 项目开始前 App的建立和路由分配 数据库的建立与连接 模型映射(建立表格) 视图函数 最终的效果图 项目代码连接见:链接:https://pan.baidu.com/s/1mRYMVZkp ...

  5. 基于Django的图书管理系统设计与实现

    全套资源下载地址:https://download.csdn.net/download/sheziqiong/86772475 全套资源下载地址:https://download.csdn.net/d ...

  6. Django创建应用和项目基本流程学习(二)

    创建项目project 创建learning_log项目 在terminal中进入项目路径(manage.py所在文件夹,后面用project_path$表示),输入如下指令: project_pat ...

  7. 【Django】图书管理

    一.实现步骤 (一)创建Django项目 - books 创建Django项目,设置项目位置与项目名 (二)创建并注册应用 - index 1.创建index应用 在项目配置文件里,导入os模块 在控 ...

  8. Spring+SpringMVC+Mybatis简单整合 图书管理项目 实现增删改查

    Spring+SpringMVC+Mybatis项目 tomcat7插件配置 <build><plugins><plugin><groupId>org. ...

  9. 【Django:图书管理(新)】

    (一).创建Django项目books (二).创建并注册应用index 1:创建index应用 导入os模块 2:执行python manage.py startapp index 跑出小火箭 (三 ...

最新文章

  1. 【Go语言】【12】GO语言的结构体
  2. 华为数据通信部门怎么样_华为最高级别认证适合小白吗
  3. 阿里云 Serverless 再升级,从体验上拉开差距
  4. HTTP 302报文
  5. 安装使用大key工具rdb_bigkeys
  6. python如何处理视频_OpenCV-Python系列之视频处理入门
  7. oracle导出超链接,Oracle Report中加入下载超链接操作方法
  8. 坐标转换-换带计算(附软件下载)
  9. astar算法c语言实,Astar寻路算法C++实现
  10. Android PreferenceScreen介绍
  11. python处理时间序列非平稳_非平稳时间序列的自相关
  12. 服务器raid0系统坏了,服务器磁盘阵列raid1、raid0、raid5故障时的数据恢复思路和方法...
  13. 《论文阅读》PV-RCNN: Point-Voxel Feature Set Abstraction for 3D Object Detection
  14. 【参赛作品71】CentOS 7.9 安装 openGauss 2.1.0 之剥茧抽丝
  15. linux7分区硬盘,centos7根分区硬盘扩容
  16. 支付宝《神奇海洋》素材
  17. 微信小程序获取用户运动步数后端返回-41003
  18. TPMS胎压芯片选择:英飞凌SP370、英飞凌SP40、飞思卡尔FXTH87
  19. 香港服务器与国内服务器的比较
  20. 基于SSM框架的洗车店预约系统的设计与实现

热门文章

  1. UVa-401-Palindromes(回文)
  2. Python 实现微信小程序的用户登录
  3. 4个强大的Linux服务器监控工具[转]
  4. [Python] NotImplemented 和 NotImplementedError 区别
  5. 深入浅出InfoPath——让管理员来部署InfoPath表单
  6. SQL Server 2005之PIVOT/UNPIVOT行列转换(转)
  7. GARFIELD@01-19-2005
  8. 为什么分布式一定要有redis,redis的一些优缺点
  9. android中绘图Paint.setAntiAlias()和Paint.setDither()方法的作用
  10. 这辆迷你摩托车,很酷!