各大网站的404,有教做点心的网站吗,wordpress任意文件删除,烟台注册公司上篇文章我们学习了Django框架——配置文件和视图函数#xff0c;这篇文章我们学习Django框架——请求与响应。
客户端和服务端的请求与响应过程#xff1a;客户端访问某个网站并发出URL请求#xff0c;服务器接受到请求后#xff0c;根据请求内容来返回响应#xff0c;如…上篇文章我们学习了Django框架——配置文件和视图函数这篇文章我们学习Django框架——请求与响应。
客户端和服务端的请求与响应过程客户端访问某个网站并发出URL请求服务器接受到请求后根据请求内容来返回响应如下图所示 请求对象
在视图函数中接收了request参数通过该参数获取到URL路径请求方式请求参数会话上传文件信息等等这里我们主要讲解获取请求参数会话、文件信息会有单独的文章讲解获取GET请求和POST请求参数一样这里讲解获取GET请求参数示例代码如下
### views.py文件
from django.http import HttpResponse
def Get_Request(request):print(request.GET) # 获取GET请求的参数return HttpResponse(OK)### urls.py文件
from Product.views import *
from django.urls import path
urlpatterns [path(admin/, admin.site.urls),path(Get_Request/,Get_Request)
]启动程序并访问http://127.0.0.1:5000/Get_Request/和http://127.0.0.1:5000/Get_Request?namelisi后端打印结果为
QueryDict: {}
QueryDict: {name: [lisi]}GET方法返回的是QueryDict类字典对象获取QueryDict类字典对象里面数据的方法如下
print(request.GET.get(name,default张三)) # 方法一
print(request.GET[name]) # 方法二在方法一中当get获取的name不存在时返回default设置的默认值张三这里我们建立使用方法一因为在方法二中当name不存在时程序会报错。
访问http://127.0.0.1:5000/Get_Request?namelisinamezhangsan后端打印结果为
QueryDict: {name: [lisi, zhangsan]}
zhangsan
zhangsan当请求出现了两个name参数时get只会返回最后一个name当请求参数有几个相同的键时可以通过getlist方法获取name的所有数据并返回为列表示例代码如下
print(request.GET.getlist(name)) 后端打印结果为
[lisi, zhangsan]获取请求方式、URL路径、cookie、session、上传文件信息示例代码如下
print(request.method) # 获取请求方式
print(request.path) # url路径
print(request.get_full_path()) # url完整路径
print(request.COOKIES) # COOKIES会话技术
print(request.session) # session会话技术
print(request.FILES) # 上传文件前端上传的文件对象访问http://127.0.0.1:5000/Get_Request/?namelisi后端打印结果如下
GET
/Get_Request/
/Get_Request/?namelisi
{csrftoken: j86YmXNrJzEqAmtuBwfKV2KnoxlCX6JQ}
django.contrib.sessions.backends.db.SessionStore object at 0x00000243ACF3E260
MultiValueDict: {}响应对象
视图函数的响应主要有四种类型分别为返回字符串HttpResponse返回模版render重定向redirect或HttpResponseRedirect和返回JSONJsonResponse。
HttpResponse
返回字符串主要使用HttpResponse方法示例代码如下
## views.py文件
from django.http import HttpResponse
def return_HttpResponse(request)return HttpResponse(return_HttpResponse)## urls.py文件
from django.contrib import admin
from django.urls import path
from Product.views import *urlpatterns [path(admin/, admin.site.urls),path(return_HttpResponse/,return_HttpResponse),
]访问http://127.0.0.1:5000/return_HttpResponse浏览器显示return_HttpResponse。返回字符串简单了解一下就行在开发中很少用到。
render
返回模版主要使用render方法在使用render方法返回模版时可以根据需求将数据传递给模版示例代码如下
## views.py文件
from django.shortcuts import render
def return_render(request)content你好return render(request,Hello World.html,{ content:content })## urls.py文件
from django.contrib import admin
from django.urls import path
from Product.views import *urlpatterns [path(admin/, admin.site.urls),path(return_render/,return_render),
]在Product文件夹创建templates文件夹并创建Hello World.html文件该文件内容如下
!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
bodyh1{{ content }}/h1
/body
/html访问http://127.0.0.1:5000/return_render浏览器显示你好。返回模版主要应用在前后端不分离的情况。
redirect或HttpResponseRedirect
重定向主要使用redirect或HttpResponseRedirect两者没多大区别示例代码如下
## views.py文件
from django.shortcuts import redirect
def return_redirect(request)return redirect(/return_HttpResponse/) # return HttpResponseRedirect(/return_HttpResponse/)## urls.py文件
from django.contrib import admin
from django.urls import path
from Product.views import *urlpatterns [path(admin/, admin.site.urls),path(return_HttpResponse/,return_HttpResponse),path(return_redirect/,return_redirect),
]访问http://127.0.0.1:5000/return_redirect就会重定向return_HttpResponse/路由中浏览器显示return_HttpResponse路由的内容return_HttpResponse。
注意在重定向的URL路径中前后都需要写斜杠。
JsonResponse
返回JSON类型数据主要用JsonResponse方法示例代码如下
## views.py文件
from django.http import JsonResponse
def return_JsonResponse(request)return JsonResponse({data:JsonResponse}) ## urls.py文件
from django.contrib import admin
from django.urls import path
from Product.views import *urlpatterns [path(admin/, admin.site.urls),path(return_JsonResponse/,return_JsonResponse),
]访问http://127.0.0.1:5000/return_JsonResponse/浏览器显示{data: JsonResponse}返回JSON主要用于前后端分离的情况。
好了Django框架——请求与响应就学习到这里下篇文章我们学习Django框架——路由。
公众号白巧克力LIN
该公众号发布Python、数据库、Linux、Flask、Django、自动化测试、Git、算法、前端、服务器等相关文章
- END -