Django--视图介绍(2)

本文深入解析Django框架中的视图请求响应机制,包括HttpRequest与HttpResponse对象的使用,基于类的视图实现,以及动态路由配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这节主要介绍视图的请求和响应对象相关概念或简单示例、基于类的视图以及动态路由。

视图的请求与响应对象

1.HttpRequest

HttpRequest对象定义于django/http/request.py文件中,每当请求到来时,Django就会创建一个携带请求元数据的HttpRequest对象,传递给视图函数的第一个参数。
视图函数中的处理逻辑就是根据元数据做出相应的动作。HttpRequest定义了很多属性和方法。

  • method
    method是一个字符串类型的值,标识请求所使用的HTTP方法,例如GET,POST,PUT,在视图函数中用这个属性判断请求的类型,在给出对应得处理逻辑 。
    例如:
 if request.method == ' GET ':
 	get_something()
 elif request.method == ' POST ':
 	post_something_()
 elif request.method == ' PUT ':
 	put_something_()
  • HttpResponse
    HttpResponse对象定义django/http/response.py文件中,在视图中主动创建并返回。

status_code状态码是重要属性,用来标识一次请求的状态,常见状态码有200表示请求成功,404标识请求的资源不存在,500标识服务器内部错误

content表示存储响应内容的二进制码

write将HttpResponse视为类文件对象,可以向其中添加响应数据,例如

response=HttpResponse('<h1>hello Django BBS</h1>')
response.write('<h2>hello Django BBS</h2>')
return response

基于类的视图

视图可以是函数,也可以是类,类视图同样能够实现视图的功能。
它的最大特点是利用不同的实例方法响应不同的HTTP。
例如:

from django.views import views
from django.views.decorators.csrf import crsf_exempt
from django.utils.decorators.csrf import method_decorator

class FirstView(View):
	html='(%s)Hello Django BBS'
	def get(self,request)return HttpResponse(self.html % ' GET ')
	def post(self,request)return HttpResponse(self.html % ' POST ')	
	@method_decorator(crsf_exempt)
	def dispath(self,request,*args,**kwargs):
		return super(FirstView,self).dispath(request,*args,**kwargs)
		....

FirstView继承自View,是所有基于类的视图的基类 。其中定义了get和post方法。FirstView重写了父类的dispatch方法,dispatch根据HTTP类型实现请求分发。

动态路由

1.使用path配置动态路由

def dynamic_hello(request,year,month,day):
	html="<h1>(%s)hello django BBS</h1>"
	return HttpResponse(html%('%s-%s-%s'%(year,month,day))

在应用中urlpatterns中加入路由定义

path('dynamic/<int:year>/<int:month>/<int:day>/',views.dynamic_hello)

在浏览器中输入http://127.0.0.1:8000/应用名/dynamic/2020/1/20,即可看见打印日期的欢迎语。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值