Django创建图书管理项目(完整版

一、创建项目test1及应用booktest

 

  • Django创建图书管理项目(完整版_第1张图片

 

创建应用booktest

Django创建图书管理项目(完整版_第2张图片

 

二、安装应用

在test1/settings.py中INSTALLED_APPS下添加应用的名称就可以完成安装

初始项目的INSTALLED_APPS如下图:

Django创建图书管理项目(完整版_第3张图片

在元组中添加一个新的项,当前示例为booktest

'booktest',

Django创建图书管理项目(完整版_第4张图片

 

三、设计模型

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数据库
  • 迁移前目录结构如下图:

Django创建图书管理项目(完整版_第5张图片

  • 迁移由两步完成
  • 1.生成迁移文件:根据模型类生成创建表的语句
  • 2.执行迁移:根据第一步生成的语句在数据库中创建表
  • 生成迁移文件命令:python manage.py makemigrations


  • 执行迁移命令:python manage.py migrate

Django创建图书管理项目(完整版_第6张图片

  • 迁移后目录结构如下图:

Django创建图书管理项目(完整版_第7张图片

 

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,目录结构如下图:

Django创建图书管理项目(完整版_第8张图片

  • 设置查找模板的路径:打开test1/settings.py文件,设置TEMPLATES的DIRS值

'DIRS': [os.path.join(BASE_DIR,'templates')],

Django创建图书管理项目(完整版_第9张图片

 

定义模板

创建templates/booktest/index.html文件如下

 



    </strong></span><span style="font-family:SimSun;background:#F7F7F7;"><strong>首页</strong></span><span style="font-family:Consolas;background:#F7F7F7;"><strong>


图书列表



        {#
    遍历图书列表#}
        {%for book in booklist%}
       

  •      {#
    输出图书名称,并设置超链接,链接地址是一个数字#}
          {{book.btitle}}
       

  •     {%endfor%}


 

创建templates/booktest/detail.html文件如下

 



    </strong></span><span style="font-family:SimSun;"><strong>详细页</strong></span><span style="font-family:Consolas;"><strong>


{#输出图书标题#}

{{book.btitle}}



        {#
    通过关系找到本图书的所有英雄,并遍历#}
        {%for hero inbook.heroinfo_set.all%}
        {#
    输出英雄的姓名及描述#}
       
  • {{hero.hname}}---{{hero.hcontent}}

  •    {%endfor%}


 

最终文件如下:

Django创建图书管理项目(完整版_第10张图片

 

 

六、开发服务器

运行服务器命令:pythonmanage.py runserver

Django创建图书管理项目(完整版_第11张图片

 

七、在浏览器地址栏中输入网址

http://127.0.0.1:8000/

网页显示效果如下图,视图被成功执行了

Django创建图书管理项目(完整版_第12张图片

 

你可能感兴趣的:(Django框架)