django前两天内容回顾
目录
django前两天内容回顾
1.web框架的本质
1.连接前端与数据库的中间介质 即socket服务端
2.在手写web框架引出django的过程中使用了两个内置模块通过'wsgiref'模块封装了socket代码处理了http相关数据 再通过'jinja2'模块的模板语法:支持将python后端数据传递给html页面并通过特殊语法完成操作 然后根据软件开发目录规范把文件拆分
3.python主流web框架
django 大而全
fask 小而精
tornado 异步非阻塞
2.django简介以及基本使用
1.版本问题
django1.X:同步 1.11
django2.X:同步 2.2
django3.X:支持异步 3.2
django4.X:支持异步 4.2
2.运行django注意事项
1.django项目中所有的文件名目录名不要出现中文
2.计算机名称尽量也不要出现中文
3.一个pycharm尽量就是一个完整的项目(不要嵌套 不要叠加)
4.不同版本的python解释器与不同版本的django可能会出现小问题
3.基本使用
1.下载
pip3 install django
pip3 install django==版本号
pip3 install django==2.2.22
2.验证
django-admin
3.常见命令
django-admin startproject 项目名 # 创建项目
cd 项目名
python38 manage.py runserver ip:port # 启动项目
4.pycharm自动创建django项目注意
会自动创建templates文件夹 但是配置文件中可能会报错
os.path.join(BASE_DIR,'templates')
5.命令行创建应用
python38 manage.py startapp appname
6.pycharm创建应用
新建django项目可以默认创建一个 并且自动注册
"""
创建的app一定要去settings.py中注册
INSTALLED_APPS = [
'app01.apps.App01Config',
'app02'
]
"""
4.目录结构
网址后缀 路由
函数 视图函数
urls.py 路由层
views.py 视图层
templates 模板层
models.py 模型层
5.django小白必会三板斧
from django.shortcuts import render,HttpResponse,redirect
HttpResponse 返回字符串类型的数据
render 返回html页面并且支持传值
redirect 重定向
3.静态文件及其配置
1.静态文件的概念
简单的理解为html页面需要使用到的不经常变化的资源
css文件、js文件、img文件、第三方文件
2.静态文件配置
STATIC_URLS = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
3.接口前缀动态匹配
{% load static %}
{% static 'bbb/ccc/d.txt' %}
4.form表单相关注意事项
form标签重要属性
action 控制提交的地址
三种编写
method 控制提交的方法
两种方法 默认是get
网络请求方式
get
朝服务端请求数据
并且可以携带一些额外的不敏感的条件(大小有限制)
URL?xxx=yyy&ooo=ppp
post
朝服务端提交数据
也可以携带数据并且数据是放在请求体里面的(大小没有限制)
请求体
5.request对象方法
request.method
获取当前请求的请求方法 结果是纯大写的字符串 GET、POST
request.GET
获取URL问号后面携带的数据 结果是一个QueryDict拥有字典的特性
request.GET.get() 值列表最后一个数据值
request.GET.getlist() 整个值列表
request.POST
获取post请求请求体里面的数据 结果也是一个QueryDict拥有字典的特性
request.POST.get() 值列表最后一个数据值
request.POST.getlist() 整个值列表
6.django连接数据库
1.django默认自带sqlite3小型数据库
2.我们可以指定其他数据库 比如MySQL
3.配置文件中需要修改配置 DATABASES
1.添加相关配置mysql、NAME、HOST、PORT、USER、PASSWORD、CHARSET
2.需要下载mysqlclient模块(如果是django1.X版本可以用pymysql)
7.ORM简介以及基本操作
1.什么是ORM?
对象关系映射
优势>>>:简单方便快捷
劣势>>>:效率可能会低
2.基操作
models.UserInfo.objects.create() # insert into
models.UserInfo.objects.filter() # where
models.UserInfo.objects.filter().update() # update
models.UserInfo.objects.filter().delete() # delete from
3.数据库迁移命令
1.models.py中编写了与数据库相关的代码
2.python38 manage.py makemigrations # 将代码操作记录下来 migrations目录
3.python38 manage.py migrate # 将操作真正同步到数据库中