做公司企业网站标准尺寸,设计制作合同交印花税吗,东莞市建设工程信息服务协会,php做网站界面代码当你考虑开发现代化、高效且可扩展的网站和Web应用时#xff0c;Django是一个强大的选择。Django是一个流行的开源Python Web框架#xff0c;它提供了一个坚实的基础#xff0c;帮助开发者快速构建功能丰富且高度定制的Web应用
全套Django笔记直接地址#xff1a; 请移步这…
当你考虑开发现代化、高效且可扩展的网站和Web应用时Django是一个强大的选择。Django是一个流行的开源Python Web框架它提供了一个坚实的基础帮助开发者快速构建功能丰富且高度定制的Web应用
全套Django笔记直接地址 请移步这里 共 10 章31 子模块 模板
模板使用
1. 配置模板目录
如果命令行创建的项目需要手动配置模板文件目录如果是Pycharm创建的项目则无需配置
在项目根目录下创建模板目录比如叫 templates后续开发模板文件会放在此目录下在项目的配置文件settings.py文件中进行模板目录的配置如下 2. 定义模板文件
在templates目录中新建一个模板文件如index.html
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body!-- 显示模板变量 --h1{{ name }}/h1/body
/html3. 模板渲染
方式一 通过render函数
from django.shortcuts import renderdef index(request):context {name: django }# 参数1请求对象# 参数2模块路径# 参数3字典数据return render(request, index.html, context)方式二 通过Template对象的render方法
from django.template import loaderdef index(request):# 模板对象template loader.get_template(index.html) # type: Template# 渲染得到字符串html_str template.render(context)# 响应请求return HttpResponse(html_str)模板语法
模板变量模板语句过滤器注释模板继承
1. 模板变量
变量名必须由字母、数字、下划线不能以下划线开头和点组成语法如下
{{ 变量 }}模板变量可以使python的内建类型也可以是对象。
def index(request):context {name: django,my_list: [python, java, php, c/c],my_dict: {name: python,age: 20,gender: 男,}}return render(request, index.html, context)!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodyh1{{ name }}/h1h1{{ my_list }}/h1 h1{{ my_list.0 }}/h1 !-- 注意列表的取值方法 --h1{{ my_dict }}/h1h1{{ my_dict.name }}/h1 !-- 注意字典的取值方法 --
/body
/html2. 模板语句
1for循环
{% for item in 列表 %}{{forloop.counter}} 1-- 表示当前是第几次循环从1开始 --{{forloop.counter0}} !-- 表示当前是第几次循环从0开始 --
{% empty %} 列表为空或不存在时执行此逻辑
{% endfor %}2if条件
{% if ... %}逻辑1
{% elif ... %}逻辑2
{% else %}逻辑3
{% endif %}比较运算符如下 !布尔运算符如下
and
or
not注意运算符左右两侧必须有空格。
{% if a 1 %} # 正确
{% if a1 %} # 错误3. 过滤器
语法如下:
使用管道符号|来应用过滤器用于进行计算、转换操作可以使用在变量、标签中。如果过滤器需要参数则使用冒号:传递参数。
变量|过滤器:参数列举几个如下
safe禁用html转义显示html标签样式而不是字符串length长度返回字符串包含字符的个数或列表、元组、字典的元素个数。default默认值如果变量不存在时则返回默认值。
data|default:默认值date日期用于对日期类型的值进行字符串格式化常用的格式化字符如下 Y表示年格式为4位y表示两位的年。m表示月格式为01,02,12等。d表示日, 格式为01,02等。j表示日格式为1,2等。H表示时24进制h表示12进制的时。i表示分为0-59。s表示秒为0-59。
value|date:Y年m月j日 H时i分s秒4. 注释
1单行注释语法如下
{#...#}2多行注释使用comment标签语法如下
{% comment %}
...
{% endcomment %}5. 模板继承
模板继承和类的继承含义是一样的可以使用模板继承来复用父模板提高代码的复用性减轻开发人员的工作量。可以通过定义 block 实现子模板对父模块内容的重写
父模板
如果发现在多个模板中某些内容相同那就可以使用block标签把这段内容定义到父模板中。
{% block 块名称 %}预留区域可以编写默认内容也可以没有默认内容
{% endblock %}子模板
使用extends标签继承父模板写在子模板文件的第一行。
{% extends 父模板路径 %}对有需要的block进行重写 不用重写父模版中的所有block如果子模版没有重写则使用父模版定义的默认值。可以使用 block.super 来包含父模板的块中定义的内容如下 {% block 名称 %}子模板的内容{{ block.super }} 显示父模板中block的内容{% endblock %}数据库
学习目标
能够进行Django数据库配置掌握Django中模型类的定义掌握Django中的迁移命令的使用能够使用Django的ORM进行数据库的增删改查能够说明查询集QuerySet的特点能够说明模型类管理器Manager的作用
数据库
ORM框架
ORM Object relational mapping 对象关系映射把类和数据库表对应把对象和表记录对应通过类和对象操作数据库表中的数据而不需要编写SQL语句 Django框架实现了ORM 功能 不需要直接面向数据库编程通过模型类和对象完成数据表的增删改查操作自动生成数据库表通过配置切换使用不同的数据库 ORM 开发步骤 配置数据库 定义模型类 (models.py) 执行迁移命令生成数据库表 生成迁移文件 python manage.py makemigrations生成数据库表 python manage.py migrate默认数据库为 sqlite3数据库名为db.sqlite3 通过模型类和对象操作数据库
数据库配置和迁移
Django项目默认 sqlite3 数据库 生成的数据库名为 db.sqlite3sqlite3 仅供测试使用可以通过配置修改为使用 mysql
一、配置使用MySQL数据库
手动创建 MySQL 数据库比如叫 db_django01
create database db_django01 charsetutf8;在与项目 setting.py 文件中配置使用mysql
DATABASES {default: {# 配置使用mysqlENGINE: django.db.backends.mysql, # 数据库产品HOST: localhost, # 数据库ipPORT: 3306, # 数据库端口USER: root, # 用户名PASSWORD: mysql, # 密码NAME: db_django01, # 数据库名}}在python虚拟环境下安装 MySQL 驱动
pip install pymysql在 与项目同名的包 下的 __init__.py 文件中初始化MySQL驱动
import pymysqlpymysql.install_as_MySQLdb()二、迁移命令生成表
打开终端进入到项目根目录下执行以下2个命令生成数据库表
1. 生成迁移文件
python manage.py makemigrations2. 生成数据库表
python manage.py migrate3. 查看数据库表
一、需求
定义模型类保存部门-员工数据 部门类Department 部门名称 name部门成立时间: create_date逻辑删除标识is_delete 员工类(Employee) 性名: name年龄: age性别: sex工资: salary入职时间 hire_date备注信息: comment
二、模型类定义
模型类被定义在 应用/models.py 文件中模型类必须继承自 Django 的 models.Model 类
1. 属性定义 模型类属性与表字段一一对应 定义属性时需要指定字段类型通过字段类型的参数指定选项格式如下 属性名 models.字段类型(字段选项) 属性名不能是python的保留关键字 属性名不能使用连续的下划线这是由django的查询方式决定的
2. 关于主键
主键primary key简写 pk不需要主动定义django会自动生成自增长的主键属性名叫 id,如果开发者自己定义了主键则django不会再生成默认的主键
3. 表名
默认为应用名小写_模型类名小写可通过通过Meta类指定表名例如 # 如果应用名为users则默认表名为users_departmentclass Department(models.Model):...class Meta:# 指定生成的数据库表的名字db_table department4. 字段类型
官方文档字段类型和选项
类型说明AutoField自动增长的IntegerField通常不用指定不指定时Django会自动创建名为id的自动增长属性BooleanField布尔字段值为True或FalseNullBooleanField支持Null、True、False三种值CharField字符串必须指定max_length表示最大字符个数TextField大文本字段一般超过4000个字符时使用IntegerField整数DecimalField十进制浮点数用python中的Decimal实例来表示必须指定 max_digits总位数decimal_places小数位数。FloatField浮点数DateField日期1 参数auto_now表示每次修改保存对象时自动设置该字段为当前时间用于保存最后一次修改时间默认为False2 参数auto_now_add表示当对象第一次被创建时自动设置保存当前时间用于保存创建时间时间默认为值为False;3 参数auto_now_add和auto_now是相互排斥的不能同时用到一个属性中TimeField时间参数同DateFieldDateTimeField日期时间参数同DateFieldFileField上传文件字段ImageField继承于FileField对上传的内容进行校验确保是有效的图片
4. 字段选项
选项默认值描述是否要迁移修改表结构nullFalseTrue表示表字段允许为空是uniqueFalseTrue表示表字段不能重复是db_column属性名称表字段名称是primary_keyFalseTrue表示字段设置为了主键一般作为AutoField的选项使用是default-默认值否blankFalse在django管理后台新增或编辑一条表数据时该字段是否允许为空null是数据库范畴的概念blank是表单验证范畴的否choices-在django管理后台新增或编辑一条表数据时该字段显示为下拉框默认为编辑框否
choices 性别属性使用了choices选项后在录入一条数据时会以下拉框显示blankblank属性默认值为false, 表示录入一条数据时当前字段必须填写不能为空否则js端js校验不通过例如下图的comment员工备注信息字段。 5. 外键
关系型数据库的关系包括三种类型
ForeignKey 一对多将 关联属性 定义在多的一端中ManyToManyField 多对多将 关联属性 定义任意一方中OneToOneField 一对一将 关联属性 定义在任意一方中 二、代码参考
部门和员工模型类 代码参考
class Department(models.Model):部门类# 部门名称字符串类型(必须要指定最大长度)name models.CharField(max_length20)# 部门成立时间: 日期类型create_date models.DateField(auto_now_addTrue)# 逻辑删除标识标识部门是否删除is_delete models.BooleanField(defaultFalse)def __str__(self):return self.nameclass Meta: # 指定表名db_table departmentclass Employee(models.Model):员工类choices_gender ((0, 男),(1, 女),)name models.CharField(max_length20)age models.IntegerField()gender models.IntegerField(default0, choiceschoices_gender)# 工资浮点类型必须要指定两个选项 999999.99salary models.DecimalField(max_digits8, decimal_places2)# 备注信息: 可以为空comment models.CharField(max_length300, nullTrue, blankTrue)# 员工入职时间hire_date models.DateField(auto_now_addTrue)# 一对多的外键员工所属部门 department_iddepartment models.ForeignKey(Department)def __str__(self):return self.nameclass Meta: # 指定表名db_table employee交互环境
Django交互环境
在Django交互环境中可以直接执行django项目代码类似 ipython 交互环境有以下两种方式使用Django交互环境
1. 通过 shell 命令进入Django交互环境
python manage.py shell2. 使用 PyCharm 的 python Console 窗口 未完待续 下一期下一章
全套笔记直接地址 请移步这里