十四、Django框架使用

news2024/11/16 5:51:59

目录

  • 一、框架简介
  • 二、MVT模型简介
  • 三、Python的虚拟环境
    • 3.1 安装virtualenv 虚拟环境
    • 3.2 创建和使用虚拟环境
  • 四、Django项目的搭建
    • 4.1 安装Django包
    • 4.2 创建Django项目
    • 4.3 创建Django项目的应用
    • 4.4 使用pycharm打开Django项目
    • 4.5 注册Django项目的应用
    • 4.6 启动Django项目
  • 五、ORM框架
    • 5.1 模型类的设计
    • 5.2 创建模型类
    • 5.3 生成迁移文件
    • 5.4 执行迁移生成表
    • 5.5 查看Django的默认数据库
    • 5.6 通过模型类操作数据库表
      • 1. 插入记录
      • 2. 更新记录
      • 3. 删除记录
    • 5.7 一对多模型操作
      • 1. 建立一对多关系模型
      • 2. 生成迁移文件和执行迁移
      • 3. 通过模型类操作数据库
      • 4. 关系字段类型
    • 5.8 后台管理
      • 1. 本地化设置
      • 2. 创建管理账号
      • 3. 进入后台管理页面
      • 4. 在后台管理中管理数据库
      • 5. 自定义模块管理类
    • 5.9 配置使用mysql数据库
      • 1. 安装mysql驱动
      • 2. 配置django项目的数据库连接
      • 3. 执行迁移操作
    • 5.10 常用字段类型
    • 5.11 常用字段约束
    • 5.12 查询集
      • 1. 常用函数
      • 2. 两大特性
      • 3. 查询集的缓存
      • 4.限制查询集
    • 5.13 F对象查询
      • 1. 更新字段值
      • 2. 在查询中比较字段值
      • 3. 在聚合操作中使用
    • 5.14 Q对象查询
    • 5.15 聚合函数
    • 5.16 关联查询
      • 1. 通过对象执行关联查询
      • 2. 通过模型类执行关联查询
  • 六、视图
    • 6.1 定义视图处理函数
    • 6.2 添加视图的url配置
    • 6.3 如何在url配置中处理参数传递
      • 1. 路径参数(Path Parameters)
      • 2. 查询参数(Query Parameters)
    • 6.4 常用的路径参数语法
  • 七、模板
    • 7.1 定义模板文件夹
    • 7.2 定义模板文件
    • 7.3 编辑视图处理函数
    • 7.4 常用的模板语法
      • 1. 变量插值
      • 2. 条件语句
      • 3. 循环
      • 4. 包含子模板
  • 八、MVT综合案例
    • 8.1 添加url配置
    • 8.2 添加视图处理函数
    • 8.3 添加模板类
    • 8.4 效果图

一、框架简介

Django是劳伦斯出版集团的开发人员为开发新闻内容网站而设计出来的一个软件,它遵循MVC思想,但是有自己的一个名词,叫做MVT。
Django遵循快速开发和DRY原则。Do not repeat yourself.不要自己去重复一些工作。
它提供了许多有用的工具和功能,使开发者能够轻松地构建高度可拓展、安全、高性能的 Web 应用。
以下是一些 Django 框架的主要特点:

  1. 强大的路由系统:Django 提供了易于配置和管理 URL 路由的功能,使开发者能够定义页面和应用程序的 URL 映射。
  2. 数据模型和数据库支持:Django 提供了强大的数据模型层,使用它可以轻松地定义数据库模式和对数据进行管理。它支持多个数据库后端,如 PostgreSQL、MySQL、SQLite 等。
  3. 表单处理:Django 提供了易于处理和验证表单数据的功能,使开发者能够轻松地创建和处理各种表单,包括用户注册、登录、数据输入等。
  4. 身份验证和授权:Django 内置了用户身份验证和授权系统,可轻松管理用户注册、登录和权限控制。
  5. 自动化管理界面:Django 自动生成管理界面,使开发者可以方便地管理网站的后台内容,如数据库记录、用户信息等。
  6. 丰富的工具和库:Django 拥有大量的内置工具和库,使开发过程更加高效。例如,它提供了自动化的表单验证、国际化和本地化支持、缓存管理、安全性和防护等方面的工具和库。
  7. 良好的可扩展性和高性能:Django 架构具有良好的可扩展性,在处理高流量和大量数据的应用程序时表现出色。

二、MVT模型简介

MVT 模型是 Django 框架中的一种设计模式,用于组织和管理 Web 应用的结构和业务逻辑。MVT 是指 Model(模型)、View(视图)、Template(模板)。
以下是 MVT 模型中的各个组件的功能和职责:

  1. Model(模型):模型代表数据的结构、字段和关系。在 Django 中,模型是用于定义数据表结构的 Python 类。它定义了应用程序所需的数据库模式,并提供了访问、操作和查询数据库的方法。模型通常映射到数据库表,并通过对象关系映射(ORM)来进行数据库操作。
  2. View(视图):视图是处理 Web 请求的代码逻辑部分,它充当了控制器的角色。负责视图接收请求,并根据业务逻辑获取(或修改)所需的数据。在 Django 中,视图通常是一个 Python 函数或类,它接收请求对象作为输入,并返回一个响应对象,可以是 HTML 内容、JSON 数据等。
  3. Template(模板):模板是用于呈现数据和生成最终输出的视图层。模板使用一种模板语言,结合传递给模板的数据,生成最终的输出结果。在 Django 中,模板通常是包含 HTML 和模板标记的文本文件,可以包含动态的数据、条件语句、循环等。
    MVT 模型的工作流程如下:
  • 当用户请求一个 URL 时,Django 的 URL 路由系统会将该请求与对应的视图函数或类匹配。
  • 视图函数或类接收请求对象,并根据业务逻辑处理请求,可能会涉及到查询数据库、处理表单数据等。
  • 视图函数或类将处理后的数据传递给指定的模板进行呈现。
  • 模板根据接收到的数据生成最终的 HTML 内容,在服务器上生成响应。
  • 服务器将响应发送给用户的浏览器,用户可以在浏览器中看到生成的 HTML 页面。
    下面是一个MVT模型的交互图示例:
    在这里插入图片描述

三、Python的虚拟环境

Python的虚拟环境是一个独立的、隔离的Python开发环境,它允许您在同一系统上同时管理多个不同的Python项目,每个项目都可以有自己的依赖包和配置。使用虚拟环境可以避免不同项目之间的包冲突,并提供了一种干净的开发环境。
通过创建虚拟环境,您可以在其中安装和管理特定于每个项目的Python包和依赖项,而不会干扰系统级Python安装和其他项目的依赖项。这样可以确保项目在不同环境下的一致性,并提供更好的隔离性和可移植性。
Python有多种工具可以创建和管理虚拟环境,最常用的是venv模块(自Python 3.3开始内置)和第三方工具如virtualenv和conda。使用这些工具,您可以在您选择的目录中创建一个独立的Python环境,并在其中安装所需的库和工具。
创建虚拟环境后,您可以激活它并在其中运行Python解释器,然后您在该环境中安装的所有软件包和依赖项都将在该环境中使用。这使得您可以在不同的项目之间切换,而无需担心包版本冲突或项目特定的配置问题。
总结来说,Python的虚拟环境是一种用于在同一系统上隔离管理多个Python项目的机制,它提供了依赖包隔离、环境隔离和更好的项目管理能力。这是Python开发中的重要工具,尤其是在大型项目或需要使用不同Python版本的项目中。

3.1 安装virtualenv 虚拟环境

(1) 在Linux系统上的安装步骤:

  1. sudo pip install virtualenv #安装虚拟环境
  2. sudo pip install virtualenvwrapper #安装虚拟环境扩展包
  3. mkdir ~/.virtualenvs #在home目录下创建存放虚拟环境的文件夹
  4. 编辑home目录下面的.bashrc文件,添加下面两行。
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
  1. 使用source .bashrc使其生效一下。

(2) 在Mac上的安装步骤:

  1. 先确认输入pip -V查看的版本和安装路径是和你所安装的python3版本一致的, 例如:
    在这里插入图片描述
  2. sudo pip install virtualenv #安装虚拟环境
  3. sudo pip install virtualenvwrapper #安装虚拟环境扩展包
  4. mkdir ~/.virtualenvs #在home目录下创建存放虚拟环境的文件夹
  5. 编辑home目录下.bash_profile文件,添加下面两行
export WORKON_HOME=$HOME/.virtualenvs
source /Library/Frameworks/Python.framework/Versions/3.11/bin/virtualenvwrapper.sh

注意:如果您使用 pip 命令以系统管理员身份(使用 sudo)安装了 virtualenvwrapper,它通常会被安装在pip命令所在的Python版本的路径下。例如我的python3.11.4是在/Library/Frameworks/Python.framework/目录下。如果不确定pip命令安装virtualenvwrapper时的安装路径和版本可以通过下面命令查找.
查看版本:
使用pip list 或者 pip freeze, 例如:
在这里插入图片描述
在这里插入图片描述
查看路径使用pip show, 例如:
在这里插入图片描述
6. 使用source .bash_profile使其生效一下。
如果遇到下面的问题:
在这里插入图片描述
可以看到 Python 虚拟环境所用的 Python 解释器路径为 /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python,而 virtualenvwrapper.sh 文件无法从该路径中导入所需的模块。
解决这个问题的方法是,确保您的 virtualenvwrapper 是针对您所使用的 Python 版本进行安装的,并使用相应的 Python 解释器来加载 virtualenvwrapper。
我这边可以很明确的知道virtualenvwrapper是安装在python3.11.4版本下的, 因此按照错误提示,我们需要修改VIRTUALENVWRAPPER_PYTHON的环境变量,将其指定到python3.11.4的解释器上, 继续编辑~/.bash_profile文件添加下面环境变量

export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.11/bin/python3

当您在创建和管理虚拟环境时,virtualenvwrapper 会使用该环境变量中指定的 Python 解释器来运行虚拟环境。通过设置正确的 VIRTUALENVWRAPPER_PYTHON 环境变量,您可以确保 virtualenvwrapper 使用您希望的特定 Python 版本。
完成设置后,再次执行source ~/.bash_profile, 看到下面提示说明成功了.
在这里插入图片描述
此时会发现~/.virtualevns目录下多了很多文件,这些文件夹是 virtualenvwrapper 的一部分,用于存储关于虚拟环境的信息和自定义脚本。以下是其中一些文件和文件夹的说明:

  • premkproject、postmkproject、initialize 以及其他以 premk、postmk、prerm、postrm、predeactivate、postdeactivate、preactivate、postactivate 等开头的文件:这些文件是用户自定义脚本文件,可以在创建、激活、停用等虚拟环境操作时触发执行用户定义的命令。
  • get_env_details 文件:此文件包含一些有关虚拟环境的详细信息(例如名称、路径、Python 解释器等)

3.2 创建和使用虚拟环境

1.创建虚拟环境

mkvirtualenv -p python3 bj11_py3

上面的命令是使用 virtualenvwrapper 创建名为 bj11_py3 的虚拟环境,使用 Python 3 解释器的命令。
这个命令的各个部分的含义:

  • mkvirtualenv:这是 virtualenvwrapper 提供的命令之一,用于创建虚拟环境(也称为虚拟 Python 环境)。
  • -p python3:这是 mkvirtualenv 命令的一个选项,用于指定要用于创建虚拟环境的 Python 解释器版本。在这种情况下,python3 表示使用 Python 3 解释器。
  • bj11_py3:这是要创建的虚拟环境的名称。您可以将其替换为您自己想要的任何名称。虚拟环境名称应该是唯一的,在您的开发中有意义,并具有描述性。
    运行上面命令后,可以在~/.virtualenvs目录下看到创建的虚拟环境
    在这里插入图片描述

2.进入虚拟环境

workon bj11_py3

这样就可以进入刚刚创建的Python虚拟环境了.
注意: 在激活(或进入)虚拟环境后,您可以执行的所有命令都将在该虚拟环境中执行。例如你在虚拟环境中执行which Python命令,查看当前的Python命令路径会显示为虚拟环境下的Python路径, 如下图所示:
在这里插入图片描述
3. 退出虚拟环境

deactivate

运行上面命令可以退出当前进入的虚拟环境

4.删除虚拟环境

rmvirtualenv bj11_py3

运行上面命令将会删除bj11_py3虚拟环境 ,同时也会删除在~/.virtualenvs目录下创建bj11_py3文件夹

5.虚拟环境下安装包

pip install 包名

注意:不能使用sudo pip install 包名,这个命令会把包安装到真实的主机环境上而不是安装到虚拟环境中。
虚拟环境下安装的包会存在虚拟环境/lib/pythonxxx/site-packages目录下
在这里插入图片描述
6.查看虚拟环境下所安装的包

pip list 或者 pip freeze

例如新创建的虚拟环境默认会有安装下面的包
在这里插入图片描述

四、Django项目的搭建

4.1 安装Django包

进入到Python的虚拟环境中执行安装, 安装的方式还是使用pip命令安装, 只是在虚拟环境下执行, 会将安装包安装到虚拟环境的对应目录下, 例如:

workon bj11_py3 # 进入bj11_py3虚拟环境
pip install django # 开始安装django

上面方式安装包会安装最新的版本(当前最新版本是4.2.4), 如果要指定安装对应的版本,可以这样

pip install django==1.8.2 # 指定安装1.8.2版本的django

注意:
安装同一个包的多个版本, 后面安装的版本会覆盖前面安装的版本.

安装完后, 就可以在虚拟环境的找到django包了
在这里插入图片描述

4.2 创建Django项目

使用命令:django-admin startproject [项目名] 注意:创建应用必须先进入虚拟环境。
以在2023_py3虚拟目录下创建day01项目为例, 大致步骤如下:

mkvirtualenv 2023_py3 # 创建虚拟环境
workon 2023_py3 # 切换到虚拟环境
pip install django # 在虚拟环境下安装django
django-admin startproject day01 #创建django项目

运行完上面命令后, 会在当前命令提示符所在的路径下创建一个day01的文件夹, 里面包含如下内容:
在这里插入图片描述
由于我们当前命令的提示符是在~(home)目录下的,所以day01其实是在home目录下的, 而不是在虚拟环境下的, 也就是说普通的shell命令还是运行在系统环境中的.
上面文件的说明如下:

  • init.py:此文件是一个空文件,用于指示day01文件夹是一个Python包。
  • asgi.py:这是一个ASGI(Asynchronous Server Gateway Interface)应用程序的入口点。ASGI是一种为Python Web应用程序提供异步通信的接口。
  • settings.py:这个文件包含了Django项目的所有配置。您可以在这里设置数据库、静态文件路径、应用程序和中间件等。
  • urls.py:这个文件定义了项目的URL映射关系,决定了请求的URL应该由哪个视图处理函数来处理。
  • wsgi.py:这是一个WSGI(Web Server Gateway Interface)应用程序的入口点。WSGI是一种为Python Web应用程序提供通用接口的标准。
  • manage.py:这是一个Django命令行工具,用于管理和操作Django项目。您可以使用它运行开发服务器、执行数据库迁移、创建管理员用户等。

4.3 创建Django项目的应用

在Django中,应用(App)是指一个可重用的独立模块,用于实现特定功能或提供特定服务。每个Django项目都由一个或多个应用组成,这些应用可以是您自己编写的应用,也可以是其他开发者编写的应用。
应用通常是一个具有特定功能的集合,例如用户认证、博客、论坛等。它们可以包含模型(Model)、视图(View)和模板(Template),以及其他一些文件和逻辑,用于处理相关的业务逻辑和数据操作。
使用应用的好处是可以实现模块化和重用性。您可以编写一次应用代码,并在多个项目中重复使用它。应用可以独立开发、测试和维护,使项目结构更加清晰和可扩展。
在Django中,您可以使用以下命令创建新的应用:

cd django项目的根路径
python manage.py startapp [应用的名称]

例如:

(2023_py3) chenyousheng@chenyoushengdeMac-mini ~ % cd day01
(2023_py3) chenyousheng@chenyoushengdeMac-mini day01 % ls
day01                manage.py
(2023_py3) chenyousheng@chenyoushengdeMac-mini day01 % python manage.py startapp booktest
Traceback (most recent call last):
  File "/Users/chenyousheng/day01/manage.py", line 11, in main
    from django.core.management import execute_from_command_line
ModuleNotFoundError: No module named 'django'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/chenyousheng/day01/manage.py", line 22, in <module>
    main()
  File "/Users/chenyousheng/day01/manage.py", line 13, in main
    raise ImportError(
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

如果遇到上面的错误一般有2个原因:

  1. 你的虚拟环境没有激活, 也就是没有执行workon命令进入指定的虚拟环境
  2. 你的python命令关联的是系统的python路径, 并没有关联到虚拟机环境中的python命令, 由于你系统的python环境中没有安装django导致的.
    我这边是因为第2个原因, 因为之前在.bash_profile中添加alias别名, 将python指定了系统的python3.11.4命令,通过在控制台中输入which python也可以发现这个问题:
    在这里插入图片描述
    可以看到python执行的路径是/usr/local/bin/python3, 这个路径并不是~/.virtualenvs开头的路径, 因为我们虚拟环境都是安装在~/.virtualenvs目录下的.
    解决办法很简单, 直接把alias干掉即可. 有两种办法:
  • 使用unalias命令删除别名只会在当前会话中生效,相当于临时删除别名。如果您重新启动终端或注销/登录系统,别名将会恢复。
  • 如果您希望永久删除别名,请编辑相应的配置文件(例如.bashrc或.bash_profile),找到别名的设置并将其删除或注释掉。保存更改后,重新加载终端或运行source命令以使更改生效。
    在Mac上,常见的位置是在~/.bash_profile文件中设置别名。您可以使用文本编辑器打开这个文件并注释或删除相关的别名行。
    去掉别名后, 再执行which python命令就可以看到使用的是虚拟环境下的python了
    在这里插入图片描述
    此时, 再次在day01目录下执行下面命令:
python manage.py startapp booktest

不报错说明创建应用成功了, 然后通过tree命令可以查看应用的目录结构如下:
在这里插入图片描述
上面文件的说明如下:

  • init.py:这是一个空的__init__.py文件,用于将目录booktest标记为Python包。
  • admin.py:这个文件通常用于定义与Django后台管理相关的模型注册和配置选项。
  • apps.py:这个文件是应用程序的配置文件,可以在其中进行应用程序的特定配置。
  • migrations:这个目录通常用于存储Django数据库迁移的相关文件,其中的__init__.py表示该目录是一个Python包。
  • models.py:这个文件通常用于定义Django模型,即数据库表的结构和字段。
  • tests.py:这个文件通常用于编写Django应用程序的测试代码。
  • views.py:这个文件通常用于定义Django视图,即处理HTTP请求并返回HTTP响应的函数或类。

4.4 使用pycharm打开Django项目

例如用pycharm打开~/day01的项目, 你会发现此时idea使用的python解释器还是系统之前安装版本的解释器
在这里插入图片描述
此时我们需要修改为我们虚拟机环境下的解释器, 可以这样操作: Preferences>Project:day01>Python Interpreter> 点击右侧齿轮按钮选择Add
在这里插入图片描述
然后找到虚拟环境中的Python解释器
在这里插入图片描述
点击OK返回就可以看到切换成功了.
在这里插入图片描述
然后回到pycharm左侧界面可以看到python解释器已经变成了虚拟环境下的版本了.
在这里插入图片描述
然后随便打开一个python文件,会看到django包需要安装,直接安装即可
在这里插入图片描述

4.5 注册Django项目的应用

建立应用和项目之间的联系,需要对应用进行注册。修改settings.py中的INSTALLED_APPS配置项。
在这里插入图片描述

4.6 启动Django项目

在当前项目根路径下执行

python manage.py runserver

在这里插入图片描述
出现上面界面说明启动成功了, 此时浏览器输入http://127.0.0.1:8000/可以看到下面的界面
在这里插入图片描述
但是你会发现上面的控制台中还出现了这个错误:

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

意思您有18个未应用的迁移。在应用程序迁移之前,您的项目可能无法正常工作:管理员、身份验证、内容类型、会话。运行"python manage.py migrate"来应用它们。
这个按照提示执行"python manage.py migrate"就可以了, 先在控制台按ctrl+c结束项目, 然后执行这条命令如下所示:
在这里插入图片描述
然后重新执行python manage.py runserver启动即可, 此时将不再看到有警告提示了:
在这里插入图片描述
python manage.py runserver命令默认在端口8000上启动开发服务器。如果您想要更改默认端口,可以在运行命令时指定不同的端口号。例如:python manage.py runserver 8080, 如下所示:
在这里插入图片描述

五、ORM框架

Django 的 ORM(对象关系映射)框架是 Django 提供的一个功能强大的工具,用于在 Python 代码和数据库之间进行交互。
ORM 框架的主要目标是在应用程序的数据模型和底层数据库之间建立映射关系,从而允许开发人员使用面向对象的方式操作数据库,而不是直接编写 SQL 查询。
Django 的 ORM 框架提供了一个高级 API,它使您能够使用 Python 类和方法来创建、读取、更新和删除数据库记录,而无需编写繁琐的 SQL 查询语句。
ORM 框架的常见用法包括:

  • 定义模型:您可以使用 Django 的 ORM 框架通过定义 Python 类来定义数据库的数据模型。这些类将被映射到数据库的表,每个类的属性对应于表中的列。
  • 进行查询:Django ORM 框架提供了一种简洁和易于使用的查询语言,使您能够执行复杂的数据库查询。您可以使用链式调用和过滤器来过滤查询结果,或者使用聚合和注释来进行数据分析。
  • 进行关联:Django ORM 框架使您能够通过定义关系字段来直接在模型之间建立关联。这样,您可以在模型之间轻松地进行关联查询,例如获取一个对象的关联对象,或者反向跟踪关联对象。
  • 数据库迁移:Django ORM 提供了一个迁移系统,用于跟踪和应用数据库模式的更改。通过迁移,您可以轻松地对数据库结构进行版本控制,并在开发过程中进行更新和升级。
    ORM 框架的好处包括提高开发效率、提供易于维护和阅读的代码、提供数据库的平台无关性等。
    使用 Django 的 ORM 框架,您可以将精力集中在应用程序的业务逻辑上,而无需过多关注底层数据库的操作。

5.1 模型类的设计

设计 Django 中的模型类主要涉及如何映射数据库表和定义模型的字段。
下面是一些设计 Django 模型类的常见步骤和注意事项:

  1. 寻找实体和属性:首先确定您的应用程序需要管理哪些数据实体。每个实体将对应一个模型类。然后,为每个实体确定需要存储的属性,并将它们映射到模型类的字段。
  2. 寻找实体之间的关系:如果您的应用程序中的实体之间存在关系,例如一对多或多对多关系,需要在模型类之间定义适当的关系字段。这些关系字段将帮助您方便地进行关联查询和获取关联实体的数据。
  3. 选择合适的字段类型:Django 提供了多种字段类型,用于存储不同类型的数据。根据属性的特性,选择合适的字段类型。常见的字段类型包括字符字段(CharField)、整数字段(IntegerField)、日期时间字段(DateTimeField)等。
  4. 添加验证和约束:根据需求,可以在模型类中添加验证和约束,以确保数据的完整性和有效性。Django 提供了多种验证器和约束选项,例如最大长度、唯一性、必填性等。
  5. 处理外键关系:如果模型类之间存在外键关系,可以使用ForeignKey字段来定义关联。外键字段将帮助您建立模型之间的关联,并提供方便的查询和数据访问。
  6. 添加特定行为和方法:您可以为模型类添加自定义方法和属性,以提供特定的行为和操作。这些方法可以对模型对象进行操作,执行业务逻辑或进行其他计算。
  7. 迁移和更新数据库:一旦您设计完模型类,使用 makemigrations 命令来生成迁移文件,然后使用 migrate 命令将这些迁移应用到数据库中。这将创建或更新数据库中的相应表和列。

5.2 创建模型类

如果我想在booktest应用的models.py中添加一个BookInfo类作为模型类, 可以这样定义:

from django.db import models


# Create your models here.
# 图书类
class BookInfo(models.Model):
    """图书模型类"""
    # 图书的标题: btitle代表数据库表中的btitle字段,CharField说明是一个字符串,max_length指定字符串的最大长度
    btitle = models.CharField(max_length=20)

    # 图书的出版日期: bpub_date代表数据库中bpub_date字段,DateField说明是日期类型
    bpub_date = models.DateField()

模型类中不需要指定id主键字段, 这个Django会帮我们自动生成.

5.3 生成迁移文件

有了模型类之后,我们还需要生成迁移文件, 在~/day01项目根路径下执行如下命令:

python manage.py makemigrations

成功后会看到生成的迁移文件所在的路径
在这里插入图片描述
对应项目的内容如下:
在这里插入图片描述

5.4 执行迁移生成表

在~/day01项目根路径下执行如下命令:


                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1110786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Guava-RateLimiter详解

简介&#xff1a; 常用的限流算法有漏桶算法和令牌桶算法&#xff0c;guava的RateLimiter使用的是令牌桶算法&#xff0c;也就是以固定的频率向桶中放入令牌&#xff0c;例如一秒钟10枚令牌&#xff0c;实际业务在每次响应请求之前都从桶中获取令牌&#xff0c;只有取到令牌的请…

聚观早报 | 荣耀Play8T上市;阿芙“超级品牌日”上线

【聚观365】10月19日消息 荣耀Play8T上市 阿芙“超级品牌日”上线 特斯拉家庭充电服务包更新 TikTok Shop印尼站关停 高通与谷歌合作开发RISC-V芯片 荣耀Play8T上市 3月28日&#xff0c;荣耀推出了荣耀Play 7T系列手机&#xff0c;其最大的卖点就是搭载了6000mAh大电池&a…

`SQL`编写判断是否为工作日函数编写

SQL编写判断是否为工作日函数编写 最近的自己在写一些功能,遇到了对于工作日的判断,我就看了看sql,来吧!~(最近就是好疲惫) 我们一起看看(针对ORACLE) 1.声明: CREATE OR REPLACE PACKAGE GZYW_2109_1214.PKG_FUN_GETDAY_HDAY AS /** * 通过节假日代码获取指定的日期[查找基…

开发小经验积累

今天使用langchain官方文档上的这个包的时候 遇到了这个报错 这个直觉判断肯定是版本问题&#xff0c;我先是去perplexity.ai搜了相关报错 后来没找到什么比较好的回答 这时候想到可以去看当前自己用的版本的langchain的源码&#xff0c;而利用vscode强大的功能&#xff0c;…

linux java 环境变量配置

前提已经存在jdk部署包&#xff0c;并且上传到服务器上 编辑&#xff1a;/etc/profile export JAVA_HOME/home/jdk1.8.0_211/ export JRE_HOME/home/jdk1.8.0_211/jre/ export PATH$JAVA_HOME/bin:$JRE_HOME/bin:$PATH编辑位置&#xff1a; 之后source /etc/profile 查看java…

JDK API

Application Programming Interface 字符串、集合、文件、输入输出、网络、多线程 文档注释 文档注释是功能级注释&#xff0c;用来说明一个类&#xff0c;一个方法或一个常量的&#xff0c;因此只在上述三个地方使用。 文档注释可以使用Java自带的命令javaDoc来对这个类生成手…

写给正在互联网经历孤独和迷茫的你

这篇文章写给正在互联网上经历孤独和迷茫&#xff0c;失去信心和希望的人们。 最近有不少公众号粉丝跟我倒苦水&#xff0c;问这两年互联网怎么这么难&#xff0c;干啥啥不成&#xff0c;都快对互联网完全失去信心了。童话觉得为了大家的心病专门来开开方子很有必要&#xff0c…

第六节:Word中对象的层次结构

《VBA之Word应用》&#xff08;10178982&#xff09;&#xff0c;是我推出第八套教程&#xff0c;教程是专门讲解VBA在Word中的应用&#xff0c;围绕“面向对象编程”讲解&#xff0c;首先让大家认识Word中VBA的对象&#xff0c;以及对象的属性、方法&#xff0c;然后通过实例让…

AI智能分析视频监控系统如何助力智慧民宿规范化、安全最大化?

民宿智能监控系统是一种便捷而有效的安全解决方案&#xff0c;它可以提供全面的监控和保护民宿的功能。以下为具体方案&#xff1a; 1、视频监控 安装高清摄像头覆盖民宿的关键区域&#xff0c;如大门、入口、走廊和共用区域等。这些摄像头可以实时监控&#xff0c;记录入住和…

element-plus 表格-自定义样式实现2

<template><h2>表格修改样式利用属性修改</h2><h3>row-style 行样式</h3><h3>row-style header-row-style 不能改背景色</h3><h3>cell-style header-cell-style能改背景色</h3><el-tableref"tableRef":dat…

面向教育行业的身份和访问管理(IAM)解决方案

教育机构面临着严峻的挑战&#xff0c;不仅要管理不同的用户角色&#xff08;如教职员工、学生和非教学人员&#xff09;&#xff0c;还要管理具有多个角色的用户&#xff0c;这些角色的动态性质使预配过程进一步复杂化&#xff0c;此外&#xff0c;随着离线课程的增加&#xf…

AI机器人客服:模拟真人的工作场景揭秘

随着科技的高速发展&#xff0c;人工智能技术应用越来越广泛&#xff0c;在客服行业&#xff0c;AI机器人客服正逐渐成为企业与客户之间沟通和服务的主要方式。与传统的机器人客服相比&#xff0c;AI机器人客服更加智能、灵活&#xff0c;并且能够以模拟真人的方式与客户进行交…

【完美世界】最新预告,石昊辣手摧花,两大强者对决,云曦终于霸气一回

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 热血动漫《完美世界》第134集预告已经更新了&#xff0c;这一集看点十足。 首先&#xff0c;石昊在预告中展示了他辣手摧花的实力。为了保护云曦&#xff0c;他不得不与来自战族的敌人战斗。 战族美女和她的同…

【网络安全 --- xss-labs靶场】xss-labs靶场安装详细教程,让你巩固对xss漏洞的理解及绕过技巧和方法(提供资源)

一&#xff0c;资源下载准备 1-1 VMware 16.0 安装请参考以下博客&#xff0c;若已经安装请忽略&#xff1a; 【网络安全 --- 工具安装】VMware 16.0 详细安装过程&#xff08;提供资源&#xff09;-CSDN博客【网络安全 --- 工具安装】VMware 16.0 详细安装过程&#xff08;…

IDC:到2027年,全球生成式AI支出将达到1430亿美元

全球著名信息调查咨询机构IDC在官网公布了一项调查&#xff0c;到2027年&#xff0c;全球生成式AI&#xff08;Generative AI&#xff0c;简称Gen AI&#xff09;支出将达到1430亿美元&#xff0c;5年复合年增长率为73.3%。 该支出包括&#xff1a;生成式AI的软件以及相关基础…

ArrayList 源码解析(JDK1.8)

目录 一. 前言 二. 源码解析 2.1. ArrayList概览 2.2. 属性 2.3. 构造方法 2.3.1. ArrayList() 2.3.2. ArrayList(int initialCapacity) 2.3.3. ArrayList(Collection c) 2.4. 新增元素 2.4.1. add(E e) 2.4.2. add(int index, E element) 2.4.3. addAll(Collectio…

通过内网穿透远程控制家中Home Assistant智能家居系统

文章目录 前言1. 安装Home Assistant2. 配置Home Assistant3. 安装cpolar内网穿透3.1 windows系统3.2 Linux系统3.3 macOS系统 4. 映射Home Assistant端口5. 公网访问Home Assistant6. 固定公网地址6.1 保留一个固定二级子域名6.2 配置固定二级子域名 前言 Home Assistant&…

【纠错】遗传算法求解VRP计算车辆容量限制的代码有bug

关联文章 关联的博客文章为&#xff1a;《遗传算法求解带时间窗的VRP问题&#xff08;python&#xff09;》 原出错函数 源程序代码如下&#xff1a; def vehicle_capacity_restraint(chrom):# 计算一条染色体的车辆容量限制individual copy.deepcopy(chrom)split_flag_no…

Simian使用方法

1.下载 链接1&#xff1a;官网下载 链接2&#xff1a;压缩包 2.操作 1.双击exe启动 2.打开控制台&#xff0c;winR 输入cmd 3.输入操作语句 G:\1111\simian-2.5.10\bin\simian-2.5.10.exe -includes"G:\1111\test\*.cpp" -threshold3 > output.txt G:\1111\si…

Vuex中多个参数显示undefined的解决方案

笔者今天在使用Vuex中的mutations改变state里面的全局状态的值&#xff0c;获取到的数据却怎么都是第一个参数是可以获取到,但是第二个就获取不到&#xff0c;就显示undefined 问题代码 mutations: {multiparameter(state,id,newStatus) {console.log("数据的Key&#x…