django笔记-03
[toc] django教程day03

《Django 教程》

静态文件

  1. 什么是静态文件

    • 不能与服务器端做动态交互的文件都是静态文件
    • 如:图片,css,js,音频,视频,html文件(部分)
  2. 静态文件配置

    • 在 settings.py 中配置一下两项内容:
    1. 配置静态文件的访问路径

      • 通过哪个url地址找静态文件

      • STATIC_URL = '/static/'

      • 说明:

        • 指定访问静态文件时是需要通过 /static/xxx或 127.0.0.1:8000/static/xxx
        • xxx 表示具体的静态资源位置
    2. 配置静态文件的存储路径

      • 静态文件在服务器端的保存位置
      • STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)
    3. 示例:

  3. 访问静态文件

    1. 使用静态文件的访问路径进行访问

      • 访问路径: STATIC_URL=/static/

      • 示例:

    2. 通过 {% static %}标签访问静态文件 {% static %}表示的就是静态文件访问路径

      1. 加载 static {% load static %}
      2. 使用静态资源时 语法:{% static '静态资源路径' %} <img src="{% static 'images/lena.jpg' %}">
    • 示例:

    • 练习:

Django中的应用 – app

什么是应用(app)

  • 应用在Django项目中是一个独立的业务模块,可以包含自己的路由,视图,… …
  • Django中,主文件夹是不处理用户具体请求的.主文件夹的作用是做项目的初始化以及请求的分发(分布式请求处理).具体的请求是由应用来进行处理的

创建应用app

  • 创建应用的指令

    • python3 manage.py startapp 应用名称

    • 如:

      • python3 manage.py startapp music

Django应用的结构组成

  • 配置安装应用

    • 在 settings.py 中配置应用, 让此应用能和整个项目融为一体

    • 如:

  • 应用的分布式路由

    • 使用include 函数让某个正则匹配后关联分支到某个app
    • 练习:

数据库 和 模型

Django下使用mysql数据库

  1. 安装 pymysql包

    • 用作 python 和 mysql 的接口

      • $ sudo pip3 install pymysql
    • 安装 mysql 客户端(非必须) $ sudo pip3 install mysqlclient

  2. 创建 和 配置数据库

    1. 创建数据库

      • 创建 create database 数据库名 default charset utf8 collate utf8_general_ci;
    2. 数据库的配置

      • sqlite 数据库配置
      • mysql 数据库配置
    3. 关于数据为的SETTING设置

      1. ENGINE

        • 指定数据库的后端引擎
        • mysql引擎如下:

          • 'django.db.backends.mysql'
      2. NAME

        • 指定要连接的数据库的名称
        • 'NAME': 'mywebdb'
      3. USER

        • 指定登录到数据库的用户名
        • 'USER':'root'
      4. PASSWORD

        • 接数据库时使用的密码。
        • 'PASSWORD':'123456'
      5. HOST

        • 连接数据库时使用哪个主机。
        • 'HOST':'127.0.0.1'
      6. PORT

        • 连接数据库时使用的端口。
        • 'PORT':'3306'
    4. 添加 mysql 支持

      • 安装pymysql 模块

        • $ sudo pip install pymysql
      • 修改项目中init.py 加入如下内容来提供pymysql引擎的支持

  3. 数据库的迁移

    • 迁移是Django同步您对模型所做更改(添加字段,删除模型等) 到您的数据库模式的方式
    1. 生成或更新迁移文件

      • 将每个应用下的models.py文件生成一个中间文件,并保存在migrations文件夹中
      • python3 manage.py makemigrations
    2. 执行迁移脚本程序

      • 执行迁移程序实现迁移。将每个应用下的migrations目录中的中间文件同步回数据库
      • python3 manage.py migrate
    3. 查看迁移执行的SQL语句

      • 将 sqlmigrate, 显示迁移的sql语句
      • python3 manage.py sqlmigrate

模型(Models)

  • 模型是提供数据信息的数据库接口。

  • 模型是数据的唯一的、确定的信息源。 它包含你所储存数据的必要字段和行为。

  • 通常,每个模型对应数据库中唯一的一张表。每个模型的实例对应数据表中的一条记录

  • 模型说明:

    • 每个模型都是一个Python类,每个模型都是django.db.models.Model的子类。
    • 每一个模型属性都代表数据库中的一个表。
    • 通过所有这一切,Django为你提供一个自动生成的数据库访问API;

Python 数据库模型 – Models

  1. ORM框架

    • ORM(Object Relationship Mapping)即对象关系映射,它允许你使用类和对象对数据库进行交互(使用类和对象和使用 SQL一样且更方便各种操作)。

    • ORM

    • 三大特征:

      1. 表 到 类的映射
      2. 数据类型的映射
      3. 关系映射
  2. 模型示例:

    • 此示例为添加一个bookstore_book 数据表来存放图书馆中书目信息
    • 添加一个 bookstore 的 app
    • 添加模型类并注册app
    • 生成迁移脚本文件bookstore/migrations/0001_initial.py并进行迁移
    • 查看数据表
    • 表bookstore_book 即为模型 Book 类对应的数据表

      • id 为主键,当设定主键时会自动添加id字段为主键
      • 如果更新模型类 models.py 中的内容时需要运行 makemigrations 和 migrate 子命名来更新和同步数据库
      • 在开发阶段如果同步数据库出错。用sql> drop database 数据库名 删除数据库后重新迁移数据库
      • 在 xxx_app/migrations/*.py 下的文件是自动生成的迁移脚本文件,可以手动删除且在下一次迁移时自动生成
  1. 编写模型类Models

    • 模型类需继承自django.db.models.Model

      1. Models的语法规范

      2. CLASSNAME

        • 实体类名,表名组成一部分,建议类名首字母大写

        • 默认表名组成规范:

          • 应用名称_classname
      3. NAME

        • 属性名,映射回数据库就是字段名
      4. FIELD_TYPE

        • 字段类型:映射到表中的字段的类型
  2. FIELD_TYPE 类型及含义

    1. BooleanField()

      • 数据库类型:tinyint(1)
      • 编程语言中:使用True或False来表示值
      • 在数据库中:使用1或0来表示具体的值
    2. CharField()

      • 数据库类型:varchar

      • 注意:

        • 必须要指定max_length参数值
    3. DateField()

      • 数据库类型:date

      • 作用:表示日期

      • 编程语言中:使用字符串来表示具体值

      • 参数:

        • DateField.auto_now: 每次保存对象时,自动设置该字段为当前时间(取值:True/False)。
        • DateField.auto_now_add: 当对象第一次被创建时自动设置当前时间(取值:True/False)。
        • DateField.default: 设置当前时间(取值:字符串格式时间如: '2019-6-1')。
        • 以上三个参数只能多选一
    4. DateTimeField()

      • 数据库类型:datetime(6)
      • 作用:表示日期和时间
      • auto_now_add=True
    5. DecimalField()

      • 数据库类型:decimal(x,y)

      • 编程语言中:使用小数表示该列的值

      • 在数据库中:使用小数

      • 参数:

        • DecimalField.max_digits: 位数总数,包括小数点后的位数。 该值必须大于等于decimal_places.
        • DecimalField.decimal_places: 小数点后的数字数量
      • 示例:

    6. FloatField()

      • 数据库类型:double
      • 编程语言中和数据库中都使用小数表示值
    7. EmailField()

      • 数据库类型:varchar
      • 编程语言和数据库中使用字符串
    8. IntegerField()

      • 数据库类型:int
      • 编程语言和数据库中使用整数
    9. URLField()

      • 数据库类型:varchar(200)
      • 编程语言和数据库中使用字符串
    10. ImageField()

      • 数据库类型:varchar(100)

      • 作用:在数据库中为了保存图片的路径

      • 编程语言和数据库中使用字符串

      • 示例:

      • upload_to:指定图片的上传路径 在后台上传时会自动的将文件保存在指定的目录下

    11. TextField()

      • 数据库类型:longtext
      • 作用:表示不定长的字符数据

字段选项

  1. FIELD_OPTIONS

    • 字段选项,指定创建的列的额外的信息
    • 允许出现多个字段选项,多个选项之间使用,隔开
    1. primary_key

      • 如果设置为True,表示该列为主键
    2. null

      • 如果设置为True,表示该列值允许为空
      • 默认为False
    3. default

      • 设置所在列的默认值
    4. db_index

      • 如果设置为True,表示为该列增加索引
    5. unique

      • 如果设置为True,表示该列的值唯一
    6. db_column

      • 指定列的名称,如果不指定的话则采用属性名作为列名
      • ex: 创建一个属性,表示用户名称,长度30个字符,必须是唯一的,不能为空,添加索引

文档参见:

  • 示例:
  • 第一次执行视图views.py 中的init_books()函数时结果
  • 练习:

<!–

  1. 相关指令

    1. 通过数据库自动导出models

      • python3 manage.py inspectdb > xxx.py –>

数据库的操作(CRUD操作)

  • CRUD是指在做计算处理时的增加(Create)、读取查询(Read)、更新(Update)和删除(Delete)

  • 数据换的增册改查可以通过模型的管理器实现

    • MyModel.objects 是管理器对象
创建数据对象
  • Django 使用一种直观的方式把数据库表中的数据表示成Python 对象

  • 创建数据中每一条记录就是创建一个数据对象

    1. Entry.objects.create(属性=值, 属性=值)

      • 返回值: 返回创建好的实体对象
    2. 创建Entry对象,并调用 save() 进行保存

    3. 使用字典创建对象,并调用save()进行保存

    • 练习:

      • 使用以上三种方式,分别向Book和Publisher表中各增加三条数据
查询数据
  • 通过 Entry.objects 管理器方法调用查询接口

    方法说明
    all()查询全部记录
    get()查询符合条件的单一记录
    filter()查询符合条件的多条记录
    exclude()查询符合条件之外的全部记录

  1. all()方法

    • 方法: all()

    • 用法: Entry.objects.all()

    • 作用: 查询Entry实体中所有的数据

      • select * from tabel
    • 返回值: QuerySet对象

  2. 查询返回指定列

    • 方法: values('列1', '列2')

    • 用法: Entry.objects.values(…)

    • 作用: 查询部分列的数据并返回

      • select 列1,列2 from xxx
    • 返回值: QuerySet

      • 会将查询出来的数据封装到字典中,再封装到查询集合QuerySet中
  3. 查询返回指定列

    • 方法:values_list('列1','列2')

    • 用法:Entry.objects.values_list(…)

    • 返回值:QuerySet

      • 会将查询出来的数据封装到元组中,再封装到查询集合QuerySet中
  4. 排序查询

    • 方法:order_by

    • 用法:Entry.objects.order_by('-列','列')

    • 说明:

      • 默认是按照升序排序,降序排序则需要在列前增加'-'表示
  • Django shell 的使用

    • 启动 Django shell

 

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇