面试
资源
个人项目
简易博客搭建
环境安装
python = 3.12 Django = 5.0.3
版本一定要对应,否则项目创建是不会成功的
项目运行
- 命令行
python manage py runserver
- pycharm 直接运行整个项目
default 默认端口号为8000,也可以通过http://127.0.0.1:8000/来访问
项目结构介绍
manage.py
: 项目交互基本都是基于这个文件,一般不要动它。settings.py
: 项目的设置,以后所有的配置都在这里urls.py
: 配置路由wsgi.py
: 项目与wsgi协议兼容的web服务器入口,部署的时候需要使用,一般不要动它。app
是Django
的组成部分,相当于一个小模块。创建语句python manage.py startapp name
url 和视图的映射
在urls.py
下,举一个例子:
1 | from django.contrib import admin |
url 的两种传参
在views.py下写视图函数,同时配置路由
1 | # 1.查询字符串的方式,get请求 |
配置:
1 | from django.contrib import admin |
str
: 非空字符串类型,但是不能包含斜杠int
: intslug
: 由英文中的横杠-
,或者下划线连接英文字符串或者数字组成的字符串uuid
: 匹配uuid字符串path
: 匹配非空字符串类型,可以包含斜杠
path函数
path(route,view,name,kwargs=None)
route
: url匹配规则
view
: 视图函数或者是类视图as_view()或者是django.urls.include()函数的返回值
name
: 命名
DIRS 模板查找路径配置
在settings.py下TEMPLATES配置路径
- “DIRS” 视图使用render渲染模板都是从这个出发的
- "APP_DIRS"是否在app下的templates下查找模板,如果需要确保INSTALLED_APPS安装了app
DTL 模板语法
1 | # profile.html代码模块 |
过滤器语法
推荐下面这个博客
https://blog.csdn.net/a599174211/article/details/82751693
数据库检查连接
- 命令行输入:mysql --version
- 输入:mysql -uroot -p,填写密码,进入mysql。
- 输入: show databases;查看已有数据库。
一个简单的例子:
1 | cursor = connection.cursor() |
ORM模型
- 易用性:使用ORM做数据库开发可以减少重复SQL语句的概率
- 性能损耗小
- 设计灵活
- 可移植性
将 OMR 模型映射到数据库中,分为以下几步:
- 在settings.py中配置好
DATABASES
- 在app中的
models.py
中定义好模型,这个模型必须是django.db.models
- 将这个app添加到settings.py的
INSTALLED_APPS
- 在命令行终端执行
python manage.py makemigrations
来生成迁移脚本 - 执行
python manage.py migrate
来将迁移脚本映射到数据库中
举一个例子:
建立模型
1 | class BookModel(models.Model): |
执行上面讲的,下面是相关操作
1 | def index(request): |
django 模型models 常用字段
models.AutoField
- 自增列 =
int(11)
- 如果没有的话,默认会生成一个名称为
id
的列 - 如果要显式的自定义一个自增列,必须设置
primary_key=True
。
models.CharField
- 字符串字段
- 必须设置
max_length
参数
models.BooleanField
- 布尔类型=tinyint(1)
- 不能为空,可添加Blank=True
models.ComaSeparatedIntegerField
- 用逗号分割的数字
=varchar
- 继承
CharField
,所以必须max_lenght
参数
models.DateField
- 日期类型
date
DateField.auto_now
:保存时自动设置该字段为现在日期,最后修改日期DateField.auto_now_add
:当该对象第一次被创建是自动设置该字段为现在日期,创建日期。
models.DateTimeField
- 日期时间类型
datetime
- 同
DateField
的参数
models.Decimal
- 十进制小数类型 =
decimal
DecimalField.max_digits
:数字中允许的最大位数DecimalField.decimal_places
:存储的十进制位数
models.EmailField
- 一个带有检查
Email
合法性的CharField
models.FloatField
- 浮点类型 =
double
models.IntegerField
- 整形
11、models.BigIntegerField
- 长整形
1 | integer_field_ranges = { |
models.GenericIPAddressField
- 一个带有检查 IP地址合法性的
CharField
models.NullBooleanField
- 允许为空的布尔类型
models.PositiveIntegerFiel
- 正整数
models.PositiveSmallIntegerField
- 正
smallInteger
models.SlugField
- 减号、下划线、字母、数字
models.SmallIntegerField
- 数字
- 数据库中的字段有:
tinyint、smallint、int、bigint
models.TextField
- 大文本。默认对应的
form
标签是textarea
。
models.TimeField
- 时间
HH:MM[:ss[.uuuuuu]]
models.URLField
- 一个带有
URL
合法性校验的CharField
。
models.BinaryField
- 二进制
- 存储二进制数据。不能使用
filter
函数获得QuerySet
。
models.ImageField
- 图片
ImageField.height_field、ImageField.width_field
:如果提供这两个参数,则图片将按提供的高度和宽度规格保存。- 该字段要求
Python Imaging
库Pillow
。 - 会检查上传的对象是否是一个合法图片。
models.FileField(upload_to=None[, max_length=100, ** options])
- 文件
FileField.upload_to
:一个用于保存上传文件的本地文件系统路径,该路径由MEDIA_ROOT
中设置- 这个字段不能设置
primary_key
和unique
选项.在数据库中存储类型是varchar
,默认最大长度为100
models.FilePathField(path=None[, math=None, recursive=False, max_length=100, **options])
FilePathField.path
:文件的绝对路径,必填FilePathField.match
:用于过滤路径下文件名的正则表达式,该表达式将用在文件名上(不包括路径)。FilePathField.recursive
:True
或False
,默认为False
,指定是否应包括所有子目录的路径。- 例如:
FilePathField(path="/home/images", match="foo.*", recursive=True)
- 将匹配
“/home/images/foo.gif”但不匹配“/home/images/foo/bar.gif”
UUIDFIELD
- uuid是32位唯一的字符串,一般用来作为主键
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 dpのweb!
评论