Python:Django框架介绍与后台管理(图书管理的项目实现)


1. Django框架介绍

1.1什么是框架?

软件框架就是为实现或完成某种软件开发时,提供了一些基础的软件产品;
框架的功能类似于基础设施 ,提供并实现最为基础的软件架构和体系;
通常情况下我们依据框架来实现更为复杂的业务程序开发;
二个字,框架就是程序的骨架

1.2Python 中常见的框架有哪些?

大包大揽 Django 被官方称之为完美主义者的Web框架。
力求精简 web.py 和 Tornado
新生代微框架 Flask 和 Bottle

Django 是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计。
由经验丰富的开发人员构建,它负责Web开发的许多麻烦,因此您可以专注于编写应用程序,而无需重新创建轮子。
免费的和开源的。
被官方称之为完美主义者的Web框架。
官方网址:https://www.djangoproject.com/

1.3 Django 的安装

在线安装Django,指定版本安装
pip install Django -i https://pypi.douban.com/simple

2.后台管理

通过简单示例,使用 Django 完成基本流程的开发,学习 Django 的主要的知识点。

第一步:项目的创建与运行

第一次使用 Django ,那么你必须要照顾一些初始设置。也就是说,您需要自动生成一些建立 Django项目的代码。

法一:

从命令行 cd 到您要存储代码的目录,然后运行以下命令:
进入项目目录,目录结构如下图:
在线安装Django,指定版本安装 pip install Django -i https://pypi.douban.com/simple
django-admin startproject mydjangoproject
再用pycharm打开建立的此目录就可以了

法二:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开后如下图:
在这里插入图片描述
目录说明:
manage.py :一个命令行工具,可以使你用多种方式对 Django 项目进行交互
内层的目录:项目的真正的Python包
_ init _.py :一个空文件,它告诉Python这个目录应该被看做一个Python包
settings.py :项目的配置
urls.py :项目的URL声明
wsgi.py :项目与 WSGI 兼容的Web服务器入口
在这里插入图片描述
按照运行给出的ip与端口进行访问测试:
在这里插入图片描述

第二步:应用的创建和使用

(1) 创建第一个应用程序

Django 自带一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。
在一个项目中可以创建一到多个应用,每个应用进行一种业务处理
创建应用的命令:
python3 manage.py startapp bookApp
在这里插入图片描述

(2) 编写第一个视图函数

我们来写第一个视图。打开文件 bookApp/views.py 并放入以下Python代码:
在这里插入图片描述

(3) 路由规则

要在 bookApp 目录中创建一个 URLconf ,创建一个名为 urls.py 。如下所示:
在这里插入图片描述
根据配置文件 mydrangoproject/settings 可知路由查找的主文件是 mydrangoproject/urls.py , 因此在该文件
添加一条 url 规则
在这里插入图片描述
include()函数允许引用其他 URLconfs 。

(4) 效果展示

启动服务器
因为有新建的文件,所以需要重新运行一下
在这里插入图片描述
访问 url 地址: http:// 127.0.0.1:8000/book/ 如果看到主页内容即成功。
在这里插入图片描述
修改为html格式:
在这里插入图片描述
在这里插入图片描述
url() 函数介绍
Django url() 可以接收四个参数,分别是两个必选参数:
regex 、 view 和两个可选参数:
kwargs 、 name 。
regex : 正则表达式,与之匹配的 URL 会执行对应的第二个参数 view。
view : 用于执行与正则表达式匹配的 URL 请求。
kwargs : 视图使用的字典类型的参数。
name : 用来反向获取 URL

第三步:项目的数据库模型

本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书、英雄
图书表结构设计: 表名: Book
图书名称: title
图书发布时间: pub_date
英雄表结构设计: 表名: Hero
英雄姓名: name
英雄性别: gender
英雄简介: hcontent
所属图书: hbook
图书-英雄的关系为一对多

(1). 创建数据库模型

创建model模型

from django.db import models

"""
名词: 
    ORM(Object Ralational Mapping,对象关系映射)用来把对象模型表示的对象映射到基于S Q L 的关系模型数据库结构中去。
    这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQ L 语句打交道,只需简单的操作实体对象的属性和方法。
一对多关系:外键写在多的一端
book:hero = 1:n
"""
# Create your models here.

# 类对应数据库表, 表名称默认为bookApp_book.
class Book(models.Model):
    # 属性对应数据库表的列名,默认会添加id这一列。
    name = models.CharField(max_length=40, verbose_name="书籍名称")
    pub_date = models.DateField(verbose_name="出版日期")

# 类对应数据库表, 表名称默认为bookApp_hero.
class Hero(models.Model):
    # 属性对应数据库表的列名,默认会添加id这一列。
    gender_choice = [
        (1, "男"),
        (2, "女")
    ]
    name = models.CharField(max_length=20, verbose_name="人物名称")
    # 性别只能选择男(1)或者女(2)
    gender = models.IntegerField(choices=gender_choice, verbose_name="性别")  # 1, 2
    content = models.TextField(max_length=1000, verbose_name="人物描述")
    # 外键关联, 如果删除书籍时,相关hero对应的书籍设置为空。
    book_id = models.ForeignKey(Book, on_delete=models.SET_NULL,
                                null=True, verbose_name="书籍id")

在settings.py导入子应用程序
在这里插入图片描述

(2). 生成数据库表

在这里插入图片描述
查看是否创建成功
在这里插入图片描述

(3). 数据库模型基本操作

  • 现在进入交互式的Python shell,并使用 Django 提供的免费 API
    python manage.py shell
  • 引入需要的包
  • 查询所有图书信息

在这里插入图片描述
需要编辑models.py,设定魔术方法(字符串友好展示,便于调试代码)
def _ str _(self):
return self.name在这里插入图片描述
退出在进入后可查看到书名
在这里插入图片描述

  • 根据条件搜索并查看
    在这里插入图片描述
  • 查找图书信息
    在这里插入图片描述
  • 修改图书信息
    在这里插入图片描述
  • 删除图书信息
    在这里插入图片描述
  • 添加关联对象

书籍的创建
book = Book(name=“倚天屠龙记”, pub_date=date(2000,1,1)) book.save()
人物的创建
hero1 = Hero(name=“周芷若”, gender=2, content=“info…”)
外键关联
hero1.book_id=book
hero1.save()
在这里插入图片描述
有一个 Hero 存在,必须要有一个 Book 对象,提供了创建关联的数据:
book.hero_set.create(name=“张无忌”, gender=True, content=“武当派第二代“张五侠”张翠山与天鹰教紫微堂堂主殷素素的儿子”)
在这里插入图片描述
获得关联集合:返回当前book对象的所有hero
book.hero_set.all()
在这里插入图片描述

第四步: 启用后台Admin 站点管理

站点分为“内容发布(后台管理)”和“公共访问(前台管理)”两部分
—“内容发布”的部分负责添加、修改、删除内容,开发这些重复的功能是一件单调乏味、缺乏创造力的工作。
因此, Django 会根据定义的模型类完全自动地生成管理模块
Django 框架中有一个非常强大的应用功能: 自动管理界面。 常被Web平台管理者使用,去管理整个Web平台。
默认情况下,在 settings.py 配置文件中 INSTALLED_APPS 包含以下应用程序,为了后续的开发,默认这些应用程序都是包含在里面的。
在这里插入图片描述

(0). 数据库迁移

使用这些 Django 自带的应用程序,需要我们在数据库中创建一些数据表对应,然后才能使用它们。在这里插入图片描述
生成迁移文件:根据模型类生成 sql 语句
执行迁移:执行 sql 语句生成数据表
在这里插入图片描述
查看:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
显示如下:
在这里插入图片描述
路径设置:
在这里插入图片描述

(1). 创建管理员用户

在这里插入图片描述
启动服务器,通过 “127.0.0.1:8000/admin” 访问,输入上面创建的用户名、密码完成登录
进入管理站点,默认可以对 groups、users 进行管理
在这里插入图片描述

(2). 管理界面本地化

默认语言为英文,若想本地化(汉化),执行以下操作
编辑 settings.py 文件,设置编码、时区
在这里插入图片描述
无需再runserver,重新访问一次就会变成中文
在这里插入图片描述

(3). 自定义模型加入后台管理

打开 bookApp/admin.py 文件,注册模型
在这里插入图片描述
刷新管理页面,可以对 Book 的数据进行增删改查操作
在这里插入图片描述

问题: 后台管理时, Book管理显示的是英文, 如何变成中文?
    class Meta:
        # 单数时显示的名称
        verbose_name = '图书信息'
        # 复数时显示的名称
        verbose_name_plural = '图书信息'
    class Meta:
        verbose_name = '人物信息'
        verbose_name_plural = '人物信息'

在这里插入图片描述

(4). 自定义管理页面

Django 提供了 admin.ModelAdmin 类
通过定义 ModelAdmin 的子类,来定义模型在 Admin 界面的显示方式

from django.contrib import admin
from bookApp.models import Book,Hero
# Register your models here.

#关联对象
#对于 Hero 模型类,有两种注册方式
#方式一:与 Book 模型类相同
#方式二:关联注册
#admin.StackedInline : 内嵌关联注册类
#admin.TabularInline : 表格 关联注册类
class HeroInline(admin.StackedInline):
    model = Hero
    extra = 2

# 书籍自定义管理页面
class BookAdmin(admin.ModelAdmin):
    # 列表页展示的设置
    list_display =  ['id', 'name', 'pub_date']
    list_filter = ['pub_date']
    search_fields = ['name']
    list_display_links = ['name']
    list_per_page =  5
    inlines =  [HeroInline]

# 人物自定义管理页面
class HeroAdmin(admin.ModelAdmin):
    # 列表页展示的设置
    list_display =  ['id', 'name', 'gender']
    list_filter = ['gender']
    search_fields = ['name', 'content']
    list_display_links = ['name']
    list_per_page =  5

    # 添加、修改页属性
    # 增加和编辑页的设置
    #fields:属性的先后顺序 (fields = ['pub_date', 'name'])
    #fieldsets :属性分组, 注意: fields和fieldsets只能设置一个
    fieldsets = [('必填信息', {'fields': ['name', 'book_id']}),
                 ('选填信息', {'fields': ['gender', 'content']}), ]

# 关联注册
admin.site.register(Book, BookAdmin)
admin.site.register(Hero, HeroAdmin)

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

  • get
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值