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

来源:互联网 发布:eventbus 跳转传数据 编辑:程序博客网 时间:2024/06/15 19:02

一、创建项目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/

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


 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 打印机拍的照片打出黑怎么办 租的汽车撞了怎么办 神州租车车坏了怎么办 深圳市公安局办保安员证怎么办? 老婆被车撞了后失忆了怎么办 生气引起的短暂失忆怎么办 win10系统忘记开机密码怎么办 戴尔win10密码忘了怎么办 戴尔电脑win10密码忘了怎么办 出门忘记带身份证了怎么办 一年染了7次头发怎么办 低头久了颈椎疼怎么办 一只眼睛磨得慌怎么办 没有睡好眼睛痛怎么办 好几天没休息好怎么办 血糖高睡不好觉怎么办 眼睛感觉磨的慌怎么办 痔疮手术后大便疼肛裂痛怎么办 肛裂排便困难痛怎么办 智齿导致的牙疼怎么办 肛裂一直不愈合怎么办 孕妇肛裂拉屎疼怎么办 产后50天小肚子突出怎么办 肚子像怀孕一样大怎么办 蹲厕所拉不出来怎么办 生气导致回奶了怎么办 老公每晚要吃奶才睡觉怎么办 分分钟想把老公杀掉怎么办 老公出轨闹的厉害离家出走怎么办? 儿子故意杀人一审判死刑怎么办 被家暴时妻子杀了丈夫该怎么办 丈夫挣钱不给妻子怎么办 白色皮鞋染了色怎么办 刺扎到手里拿不出来怎么办 军官证解锁片丢了怎么办 六安市人民医院药品停用了怎么办 信无法寄到该怎么办 5个月的宝宝光有屎沫怎么办 胸牌的别针坏了怎么办 工资表税金扣多了怎么办? 装修公司不发放工程怎么办