系列文章目录 第一章 django安装与介绍
文章目录
- 系列文章目录
- 一、django配置文件
-
- 1.静态资源文件端口配置
- 2.数据库配置
- 二、django三个关键方法
-
- 1.HttpResponse
- 2. render
- 3.redirect
- 二、request对象方法
- 三、djang orm简介
-
- 1.特点
- 2.概念
- 3.orm基本使用
-
- 1.编写类代码
- 2.执行数据库迁移命令
- 3.表名的特征
- 4.扩展
- 5.数据操作
一、django配置文件 一个完整的项目有数据持久层、业务逻辑层、表现层
其中表现层的html页面时存放在templates文件下的,而一些别的静态资源则需要在项目根目录下创建一个static文件(名字自定),在静态资源文件夹中放css、js、图片等。
业务逻辑层中对应的是views.py中的视图函数,通过编写函数来完成业务逻辑。
数据持久层则是首先在models.py中设置数据库,然后迁移表从而获取对应数据库,以便操作。
通过上诉三层需要设置django配置文件,其中静态资源文件需要开设静态端口
1.静态资源文件端口配置 【web框架|django框架——django基础使用】静态文件资源访问接口固定配置
STATIC_URL = "/static/" #是接口前缀 表示具备访问静态文件资源的权限
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
] #此处为列表,但是查找资源时一但找到资源就会自动停止在列表中的搜索
如: html页面路径
< link rel=“stylesheet” href=https://www.it610.com/article/“/static/bootstrap-3.4.1-dist/css/bootstrap.css”>
当资源接口名需要反复变更时:可以对资源接口实行动态绑定
接口前缀动态绑定
此时配置文件中的STATIC_URL 可以随意修改只需要在引入资源文件处做一个修改即可
{% load static %}
2.数据库配置 django配置文件中默认配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
连接到对应数据库修改为:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "dj", #数据库名字
'HOST': "127.0.0.1", #连接数据库ip
'PORT': 3306, #连接数据库端口
"USER": "root", #连接的用户名
"PASSWORD": "root", #连接的密码
#除此以外还可以添加别的设置如charset等但一定要大写
}
}
针对于django3以前的版本需要额外设置模块
在项目同名的文件夹内的__init__.py
或者app容器的文件夹内的__init__.py
添加一行固定的代码
import pymysql
pymysql.install_as_MySQLdb()
二、django三个关键方法 1.HttpResponse 主要用于返回字符串类型的数据
由于该方法返回的值能直接显示在页面上,所以不创建html
1.先在urls中添加路由
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^isHttpResponse/', views.isHttpResponse),
]
2.在views中添加视图函数
def isHttpResponse(request):
return HttpResponse("这是一个字符串")
3.开启django服务后直接访问url
文章图片
2. render 主要用于返回html文件 并且支持模板语法
1.先在urls中添加路由
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^register/', views.register),
]
2.在views中添加视图函数
def isHttpResponse(request):
url(r'^register/', views.register),
3.在templates模板文件下创建register.html
注册 - 锐客网
注册
4.开启django服务后直接访问url
文章图片
3.redirect 主要用于重定向 括号内可以写其他网站的全称 也可以自己网站的后缀
1.先在urls中添加路由
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^isRedirect/', views.isRedirect),
]
2.在views中添加视图函数
def isRedirect(request):
return redirect("/register/")
3.开启django服务后直接访问url
文章图片
二、request对象方法 提交post请求 默认会报403,因为django全局发送post请求均需要字符串验证
csrf功能:防止跨站请求伪造的功能
直接去配置文件中注释一行可以去除csrf
MIDDLEWARE = [
# ‘django.middleware.csrf.CsrfViewMiddleware’,
]
get请求和post请求都会触发同一个视图函数的运行,触发为action中设置的视图函数,如果没设置就以该网页自身视图函数运行。
针对不同的请求执行不同的代码
GET返回url中?后的数据
POST获取用户数据提交的普通数据
所以此时需要对全局的request进行操作
#获取request的请求类型
request.method#返回的是纯大写的请求方法字符串
#获取post方式的form表单数据
request.POST#结果是一个QueryDict 可以看成字典处理
request.POST.get('username')#获取的到的是一个对象
request.POST.getlist('username')#获取的整个数据列表
# 获取url后面携带的数据
request.GET#结果是一个QueryDict 可以看成字典处理
request.GET.get('username')#获取的到的是一个对象
request.GET.getlist('username')#获取的整个数据列表
三、djang orm简介 ORM:对象关系映射
1.特点 能够让不会写SQL的python程序员使用python语法就可以直接操作MySQL
好处:提升了开发效率,框架使用门槛降低等等
坏处:封装了SQL语句 有时候可能效率不高 还需要人为编写SQL调优
2.概念 表 => 类
一行行数据 => 类产生的一个个对象
数据字段 => 对象的一个个属性
3.orm基本使用 使用orm前提需要取models.py中编辑类代码
1.编写类代码
class Users(models.Model):
uid = models.AutoField(primary_key=True)# 等价于uid int primary key auto_increment
name = models.CharField(max_length=32)# 等价于name varchar(32)
pwd = models.IntegerField()# 等价于pwd int
2.执行数据库迁移命令
python manage.py makemigrations # 记录操作
python manage.py migrate # 将操作迁移到数据库
首次执行迁移命令 django还会自动创建一些默认需要使用到的表
3.表名的特征
models.py中User => mysql中app01_user
由于django支持多个应用 为了区分不同应用下可能会出现相同的表名
所以自动加上了应用的前缀 因为同一个应用下不可能出现相同的表名
4.扩展
1.表的主键可以不写 orm会自动帮你写一个名为id的主键
2.每次修改了跟数据库相关的python代码 都需要重新执行迁移命令
针对两个迁移命令 可以采用pycharm提示功能编写
5.数据操作
# 增加数据
user_obj = models.User.objects.create(username='kdq', password='kdq123')
# 修改 不使用filter则为全部记录都修改
models.Users.objects.filter(uid=1).update(name='kdqdd')
# 查看 不使用filter则为全部记录都查看
res = models.Users.objects.filter(name='kdq')
#如果获取的记录不是一条需要使用索引或者first()获取第一条
res = models.Users.objects.filter().first() # 一堆记录中的第一条
res = models.Users.objects.all() # 表中的全部记录
re = res[0] # 拿第一条记录
# 删除 不使用filter则为全部记录都删除
models.Users.objects.filter(uid=3).delete()
推荐阅读
- web框架|django框架——模板层
- web框架|django框架——虚拟环境、django版本区别、视图层
- django框架|django——版本问题、启动问题、安装、基础使用、应用app、django主要文件介绍
- 网络编程|网络编程——socket套接字、黏包
- python——用Turtle画画写名字
- 软件测试|【码住收藏】软件测试报告模板范文来了——优秀测试报告模板流程
- 软件测试|十分钟带你看懂——Python测试框架之pytest最全讲
- 技术交流|Python图像处理丨图像缩放、旋转、翻转与图像平移
- Python数据分析基础-2Python标量类型