web框架|django框架——django基础使用

系列文章目录 第一章 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
web框架|django框架——django基础使用
文章图片

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
web框架|django框架——django基础使用
文章图片

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
web框架|django框架——django基础使用
文章图片

二、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()

    推荐阅读