博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django之视图
阅读量:6687 次
发布时间:2019-06-25

本文共 2829 字,大约阅读时间需要 9 分钟。

Django视图

Django的视图是指项目的视图函数或视图类,当浏览器发送请求时,视图函数或类会给与响应,响应的网页可以是HTML文件,可以是字符串信息,也可以是重定向等。视图函数和视图类的代码一般放置于项目或APP的views.py文件中。

每个视图函数或视图类都负责给对应的URL返回一个网页。

CBV和FBV

CBV是指基于类的视图,FBV是指基于函数的视图

FBV示例

from django.http import HttpResponsedef add_grader(request):    if request.method == 'POST':        new_gradername=request.POST.get('gradername')        models.Grader.objects.create(gradername=new_gradername)        return redirect('/grader_list/')    return render(request,'add_grader.html',)# home是一个视图函数,每个视图函数默认使用HttpRequest对象作为第一个参数,并且通常称之为request,该参数中包含了请求的信息。# 视图会返回一个HttpResponse对象,其中包含响应的内容。

CBV示例

from django import viewsclass AddGrader(views.View):        def get(self,request):  # 请求方式为GET时执行        return render(request, 'add_grader.html', )        def post(self,request):  # 请求方式为POST时执行        new_gradername = request.POST.get('gradername')        models.Grader.objects.create(gradername=new_gradername)        return redirect('/grader_list/')# 定义的视图类需要继承views.View# urls.py中的对应关系如下 url(r'^add_grader/$', views.AddGrader.as_view())

 Request对象

浏览器发送请求,Django会将请求信息包装到请求对象中,响应视图函数通过request参数得到请求对象。

请求相关的常用值

请求常用值 说明
request.path_info 只返回用户访问的URL,不包括域名
request.method 获取请求使用的方法
request.GET 返回GET请求的所有参数,类似字典的k:v形式
request.POST 返回POST请求的所有参数,类似字典的k:v形式
request.body 返回请求体,byte类型

上传文件示例

def upload_file(request):    if request.method=='POST':        # print(request.POST)        # 
# post提交的文件需要在request.FILES中获取 # print(request.FILES) #
], 'photo2': [
]}> # 得到文件对象字典,文件名对应文件对象,可根据文件名拿到文件对象 file_obj1 = request.FILES.get('photo1') file_obj2 = request.FILES.get('photo2') # print(file_obj1,type(file_obj1)) # a.jpg
file_name=file_obj1.name # print(file_name) # a.jpg with open(file_name, 'wb')as f: for line in file_obj1: f.write(line) return HttpResponse('成功') return render(request,'upload_file.html')
视图函数
    
Title
upload_file.html

 Respanse对象

相关操作

# 响应字符串from Django.http import HttpResponseresponse=HttpResponse('text page')# 设置响应头信息response = HttpResponse()response['Content-Type'] = 'text/html; charset=UTF-8'# 删除响应头信息del response['Content-Type']# 示例def home(request):    response = HttpResponse    print(response)    # 
response = HttpResponse("Text only, please.", content_type="text/plain") print(response) #
response['Content-Type'] = 'text/html; charset=UTF-8' print(response) #
del response['Content-Type'] print(response) #
return HttpResponse('hello')

 

转载于:https://www.cnblogs.com/mingkong-z/p/9188030.html

你可能感兴趣的文章
剖析AWS CodeDeploy
查看>>
首次踏入vue坑——阅读zhihudaily-vue源码
查看>>
前端开发工具——汇总篇
查看>>
Rust编程语言的核心部件
查看>>
CSS(颜色_字体)
查看>>
用Ubuntu和RStudio Server搭建一个R语言的云平台
查看>>
Ubuntu下修改PDF默认打开程序
查看>>
BZOJ 1061: [Noi2008]志愿者招募【单纯形裸题】
查看>>
12月25日云栖精选夜读:阿里安全潘多拉实验室龙磊:越狱 iOS 11.2,我选了一条最难走的路...
查看>>
小菜一步一步学数据结构之(五)顺序栈
查看>>
MPLS LDP随堂笔记2
查看>>
2017年浙江省大学生高等数学 (微积分) 竞赛试题 (数学类)
查看>>
阿里安全潘多拉实验室龙磊:越狱 iOS 11.2,我选了一条最难走的路
查看>>
使用iSCSI Target创建集中式安全存储(一)
查看>>
《Vim实用技巧(第2版)》——2.5 能够重复,就别用次数
查看>>
JVM上的随机数与熵池策略
查看>>
《为iPad而设计:打造畅销App》——第1章 拥抱新模式
查看>>
如何在 Ubuntu 14.10 上安装 KDE Plasma 5.2
查看>>
Java8并发教程:Threads和Executors
查看>>
《Python算法教程》——2.3 图与树的实现
查看>>