[python项目]django框架——数据库管理、后台管理

一、数据库创建

(1)、要求

完成图书-英雄信息的维护,需要存贮两种数据:图书、英雄
要求如下
在这里插入图片描述
这里需要用到ORM
ORM(object relation mapping)对象关系映射,帮助我们对数据库进行增删改查。不需要我们用sql语言进行管理,只需要简单的操作。

(2)、过程

1、在models模块这里可以设置添加数据表
只要其父辈是models.Model,则会生成对应的数据库结构
在这里插入图片描述
2、在主应用的设置文件里面添加bookapp子文件,这样可以读取到子应用的信息
在这里插入图片描述
3、生成迁移脚本,进行迁移
注意在migrations里面有__init__.py文件才能被迁移脚本搜索到
生成迁移脚本
在这里插入图片描述
进行迁移
在这里插入图片描述

4、可以在数据库查看到bookapp下面的book类的数据库
在这里插入图片描述
5、目前功能正常,继续完善我们数据表格
在这里插入图片描述

内容说明:
(1)、一个类就是一个数据表格,对应的表名称为bookapp_类名称
(2)、属性对应数据表的网名,默认会添加id这一列
(3)、一对多关系(一本书,可能对应多个英雄)


from django.db import models


# Create your models here.

class Book(models.Model):
    name = models.CharField(max_length=40, verbose_name="书名")
    pub_date = models.DateField(verbose_name="出版日期")


class Hero(models.Model):
    gender_choice = [
        (1, "男")
        (2, "女")
    ]
    name = models.CharField(max_length=20, verbose_name="人物名称")
    gender = models.IntegerField(choices=gender_choice, verbose_name="性别")                                     #进行性别选择
    content = models.TextField(max_length=100,verbose_name="人物描述")
    book_id = models.ForeignKey('Book', on_delete=models.SET_NULL,null=True,verbose_name="书籍id")                #外键关联,删除书籍时,相关的hero设置为空

6、进行数据迁移
完成后可以看到我们建立的数据库
在这里插入图片描述

二、数据库管理

(1)、数据库管理工具

安装一个ipython,更友好的补齐工具
在这里插入图片描述
进入python的shell窗口
在这里插入图片描述
导入需要更改的数据库
在这里插入图片描述

(2)、查看数据

目前数据都为空
在这里插入图片描述
在这里插入图片描述

(3)、增加数据

方式1
数据库表中的一条记录对应OOP的一个object

In [6]: from bookapp.models import Book,Hero

In [7]: b1=Book()

In [8]: b1.name="西游记"

In [10]: from datetime import date

In [11]: d1 = date(2022,7,7)

In [12]: b1.pub_date=d1

In [15]: b1.save()             #执行存储

In [16]: Book.objects.all()

此时能看到有存储信息,但是看不到名字
在这里插入图片描述
添加代码可以返还字符串
在这里插入图片描述
在这里插入图片描述

这下可以看到内容
在这里插入图片描述

在这里插入图片描述
方式2

In [1]: from bookapp.models import Book,Hero

In [4]: from datetime import date

In [5]: b2=Book(name="红楼梦",pub_date=date(1999,1,1))

In [6]: b2.save()

此时可以看到增加的数据
在这里插入图片描述

(4)、搜索

1、根据名字搜索
如果按照这种方式搜索,得到的是结果的集合
在这里插入图片描述
因为对应的书籍只有一本,加上first(),就可以从集合里面拿出第一本
在这里插入图片描述

(5)、删除

刚才的b1已经定位到了红楼梦那本书,现在可以直接删除b1
在这里插入图片描述

(6)、创建关联对象

In [11]: from datetime import date

In [12]: book=Book(name="倚天屠龙记",pub_date=date(2000,1,1))

In [13]: book.save()

In [14]: hero1=Hero(name="张无忌",gender=1,content="info...")

In [15]: hero1.save()

In [38]: Hero.objects.all()
Out[38]: <QuerySet [<Hero: 张无忌>]>

In [39]: Book.objects.all()
Out[39]: <QuerySet [<Book: 红楼梦>, <Book: 倚天屠龙记>]>

In [40]: hero1.book_id

此时,hero1对应张无忌这个英雄,book对应倚天屠龙记这本书,hero1并没有对应键值对。
在这里插入图片描述
进行绑定

In [45]: hero1.book_id=book

In [52]: hero1.book_id

In [53]: hero1.book_id.id

可以查看到英雄对应的书籍和其绑定的id
在这里插入图片描述

三、后台管理

1、添加数据到后台管理
将刚刚注册到数据库里面的
在这里插入图片描述
可以登录admin,将书籍管理加入到后台管理站点
在这里插入图片描述
可以查看到我们的书籍
在这里插入图片描述
2、修改中文
可以将Books和Heros表名更改为中文
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
可以看到已经修改为了中文
在这里插入图片描述
3、添加模块
1)#输出id,名字和出版日期。
在这里插入图片描述
在这里插入图片描述
2)#添加赛选日期功能
在这里插入图片描述
3)#搜索名字功能
在这里插入图片描述

在这里插入图片描述
4)#分页信息
新加几个图书,方便测试。
之前的图书如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5)#添加链接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6)#可以添加选填和必填信息
在这里插入图片描述
之前
在这里插入图片描述
现在有了选填和必填信息
在这里插入图片描述
7)#添加关联信息
在这里插入图片描述
在这里插入图片描述

四、html语法

(1)、标题标签

在这里插入图片描述
效果
在这里插入图片描述

(2)、有序列表和无序列表

在这里插入图片描述
、效果
在这里插入图片描述

(3)、图片标签

在这里插入图片描述
效果
在这里插入图片描述

(4)、链接标签

在这里插入图片描述
效果:
点击图片或者文字就回跳转
在这里插入图片描述

(5)、表格标签

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1">                                     #table代表表格,border代表标签
    <tr>                                                        #tr代表行
        <td>主机名</td>                                #td代表列
        <td>IP</td>
    </tr>
    
    <tr>
        <td>localhost</td>
        <td>127.0.0.1</td>
    </tr>
    
    <tr>
         <td>server1</td>
         <td>127.0.0.1</td>
    </tr>
    
</table>

</body>
</html>

在这里插入图片描述
效果
在这里插入图片描述

(6)、表格标签

表示换行
在这里插入图片描述
效果
在这里插入图片描述

五、关联html文件

(1)、关联图书信息的html

创建样本目录下的html文件
在这里插入图片描述
将上下文的context{‘books’:‘book’}填充到index.html代码(此过程叫渲染)
在这里插入图片描述

效果
在这里插入图片描述
设置用户展示界面
在这里插入图片描述
效果
在这里插入图片描述

(2)、设置搜索图书id的html

同上,增加英雄模块方面的详情页,可以通过输入书籍id,搜索到书籍信息
在这里插入图片描述
定义detail函数,将数据库的值传给租用的detail.html文件
在这里插入图片描述
书写detail.html文件,定义输出画面
在这里插入图片描述
效果如下
在这里插入图片描述

(3)、将图书信息和搜索信息进行链接

在这里插入图片描述
效果
在这里插入图片描述
点击后会自动跳转
在这里插入图片描述
流程图

1、浏览器请求
2、request封装后交给django框架进行处理
3、路由配置文件(可以从主到子配置文件)
4、执行视图函数
      1)第一种返还方式
           试图函数处理,直接返还
       2)第二种返还方式
            传递信息给模板(template)里面的html进行渲染
            返还给用户
       3)第三中返还方式
             利用model.py对数据库里面的内容进行操作,返还给视图函数
             试图函数将变量传给模板(template)里面的html进行渲染
             返还给用户
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值