django
2023-07-02 17:30:21 10 举报
AI智能生成
django基本使用
作者其他创作
大纲/内容
文档
https://docs.djangoproject.com/zh-hans/4.2/intro/tutorial01/
https://www.cnblogs.com/clschao/articles/10391859.html
HTTP协议
1.请求格式
请求行
请求方法|空格|URL|空格|协议版本|回车符换行符
请求头
头部字段名:值|回车符换行符
请求头中的最后一个键值对后面追加2遍回车换行符
请求数据
get请求没有请求数据
post请求,请求数据在请求头后面
2.响应格式
状态行
协议版本|空格|状态码|空格|状态码描述|回车符换行符
响应头
头部字段名:值|回车符换行符
响应头中的最后一个键值对后面追加2遍回车换行符
响应正文
3.URL
https://www.processon.com/mindmap/6498c3847536f6009893b420
层级URL标记符号为[//],固定不变
服务器:
通常为域名,有时为IP 地址
端口:
0-56635,以数字方式表示,HTTP协议默认80端口
路径:
以"/"区分路径中的每一个目录名称
/mindmap/6498c3847536f6009893b420
查询:
GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,<br>通常以UTF8的URL编码,避开字符冲突的问题
https://www.cnblogs.com/clschao/articles/9230431.html<font color="#e74f4c"><b>?name=chao&age=18</b></font>
4.请求方法
get
GET提交的数据会放在URL之后,也就是请求行里面,<br>以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456
常用的get请求方式:浏览器输入网址 ,a标签 ,form标签 method='get'
post
POST方法是把提交的数据放在HTTP包的请求数据部分中
post请求方法,一般都用来提交数据.比如用户名密码登录
get和post区别
GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
其他方法
HEAD
PUT
DELETE
TRACE
CONNECT
PATCH
5.响应状态码
1xx消息
请求已经被服务器接收,继续处理
2xx成功
请求已成功被服务器接收
3xx重定向
需要后续操作才能完成这一请求
4xx请求错误
请求含有语法错误,或者无法被执行
5xx服务器错误
服务器在处理某个正确请求时发生错误
6.http协议特点
1.基于 请求-响应的模式
2.无状态保存
3.无连接
每次服务端响应完请求,会立即完成4次挥手断开链接
下载安装
1.官网地址
https://www.djangoproject.com/download/
2.pip安装
pip3 install django==4.2
mvc、mtv、mvvm模型
MVC
M:models数据库相关
V:views 视图逻辑相关
C:contgroller控制器, url分发,不同路径找不同的视图函数
MTV
M:models 数据库相关
T:templages 模板,html文件
V:views视图逻辑 + url控制器(MVC模型中的controller)
MVVM
后面补充
基础配置
1.创建项目
django-amdin <b><font color="#e74f4c">startproject</font></b> 项目名称
2.运行项目
python manage.py <b><font color="#e74f4c">runserver</font></b> 127.0.0.1:8080
若不指定端口,默认为8000
3.创建应用
python manage.py <b><font color="#e855a4">startapp </font></b>应用名称
创建应用后需要在 settings.py文件的 INSTALL_APPS下添加app配置
INSTALL_APPS = ['应用名称.apps.App01Config']
4.项目目录
manage.py
Django项目的工具,通过它可以调用django shel 和 数据库、关闭和启动项目与项目交互等等
settings.py
项目配置文件,包括数据库信息,调试标志及以及其他一些工作的变量
urls.py
url调度器,负责把URL映射到应用程序
wsgi.py
runserver 命令就是使用wsgiref模块作的简单的webserver, 后面会用renserver命令.
Settings配置
URL路径补全<font color="#e855a4" style="">"/"</font>
APPEND_SLASH = True
True 自动补全 /, False 取消自动补全 /
关闭CSRF字符串验证
MIDDLEWARE
注销:django.middleware.csrf.CsrfViewMiddleware'<br>
app应用配置
创建django应用后,在settings文件下配置 INSTALL_APPS, 把应用所在包下的apps文件中的配置类引入
INSTALLED_APPS = [<br> # 以下两种写法都可以<br> '<b><font color="#e74f4c">app01.apps.App01Config</font></b>',<br> #'app01',<br>]<br>
host路径
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
template模版路径
TEMPLATES = ['DIRS': [BASE_DIR / 'templates']]
urls配置(路由分发)
项目文件夹下的urls.py文件写法
from django.contrib import admin<br>from django.urls import path, include<br>from root import views<br><br>urlpatterns = [<br> path('admin/', admin.site.urls),<br> path('', views.home), # root视图,项目登录页<br> path('home/', views.index), # 登录成功后,重定向跳转到 home.html<br> # path第一个参数是应用名,include通过 '应用名.urls'路由,跳转到应用下的视图<br> path('<b><font color="#e74f4c">app01/</font></b>', include('<b><font color="#e74f4c">app01.urls</font></b>')), <br> path('app02/', include('app02.urls')),<br>]
应用下的urls.py文件写法
a标签href中的url写法
语法: <a href="/<b><font color="#e74f4c">url路径</font></b>/">标签名</a>
<a href="/app01/">app01</a>
请求和响应常用属性和方法
请求相关
request -- HttpRequest对象
request.GET
获取GET请求提交的数据
http://127.0.0.1:8000/<b><font color="#e74f4c">?username=zew&password=123</font></b>
<<b>QueryDict</b>: <b><font color="#e74f4c">{'username': ['zew'], 'password': ['123']}</font></b>>
request.POST
获取POST请求提交的数据
request.META
获取GET请求头(Request Headers)相关信息,就是一个字典
获取请求头信息时,key前面加上“HTTP_”
request.META['HTTP_USER_AGENT']
请求路径
request.path
请求路径中的url
reqeust.path_info
请求路径中的url
request.get_full_path()
加上get请求参数
响应相关
render
回复html页面
return <b><font color="#e74f4c">render(request, 'login.html')</font></b>
HttpResponse
回复字符串时使用
return HttpResponse('404 Not Fond')
redirect(重定向)
重定向url路径
return redirect('/url路径/')
示例
def home(request):<br> if request.method == 'GET':<br> return render(request, 'login.html')<br> elif request.method == 'POST':<br> username = request.POST.get('username')<br> password = request.POST.get('password')<br><br> if username == 'zew' and password == '123':<br> <b>return redirect('/<font color="#e74f4c">home</font>/')</b> # 重定向<br> else:<br> return HttpResponse('用户名或密码错误')<br><br># 重定向到首页<br>def index(request): <br> return render(request, 'home.html')<br>
# 项目下的urls.py配置<br><br>from django.contrib import admin<br>from django.urls import path, include<br>from root import views<br><br>urlpatterns = [<br> path('admin/', admin.site.urls),<br> path('', views.home), # root视图,项目登录页<br> path(<b><font color="#e74f4c">'home/', views.index</font></b>), # 登录成功后,重定向跳转到 home.html<br>]
重定向状态码
302 临时重定向
旧地址资源还在,只是临时重定向到某个地址<br>
301 永久重定向
旧地址的资源被永久地移除
旧地址的 <b>ResponseHeaders</b> 中的 <b><font color="#e74f4c">Location</font></b> 可查看重定向的URL地址
视图函数的编写模式
FBV(function based views)
视图中写视图函数
视图函数可以用装饰器装饰
<b><font color="#e74f4c">CBV(class based views)</font></b>
1. 继承父类 View
from django.views import <b><font color="#e74f4c">View</font></b>
父类 View 提供的一个静态方法 as_view() ,as_view 方法是基于类的外部接口, <br>他返回一个视图函数,调用后请求会传递给 dispatch 方法,dispatch 方法再根据不同请求来处理不同的方法
2. views.py重写父类View中的<b><font color="#e74f4c">dispatch</font></b>方法
# django.Views.View中的dispatch方法
urls.py 调用继承自父类的as_view()静态方法;<br>视图类中重写父类的dispatch方法,dispatch方法自动根据不同的请求类型来处理不同的方法
3.CBV加装饰器函数
from django.utils.<b>decorators</b> import <b><font color="#e74f4c">method_decorator</font></b>
语法:
<b><font color="#e74f4c">@method_decorator(装饰器函数名, name=’视图类中的方法名‘)</font></b>
方式一:
给视图类中的某个方法加装饰器
@method_decorator(wrapper)
方式二:
给视图类中的dispatch方法加装饰器(相当于给类中的所有方法加了装饰器)
@method_decorator(wrapper)
方式三:
给视图类加装饰器
@method_decorator(wrapper, name='get')
<b>装饰器函数:</b>
0 条评论
下一页