Python Web开发学习-Django(15)视图Views介绍

定义视图

视图是Django的MTV架构中的重要组成部分,它实现业务逻辑处理,决定处理用户请求和生成相应内容,并在Web页面或其他文档中显示响应结果。

响应的内容可以是王爷的HTML的HTML代码,XML文档,图像或者其他格式的内容。

views.py示例代码:

 1 from django.http import HttpResponse
 2 from datetime import date
 3 from django.http import Http404
 4 import csv
 5 from django.http import JsonResponse
 6 from django.shortcuts import redirect
 7 
 8 #获取数据日期
 9 def showDate(request,urlData):
10     d = date.today()
11     s = "数据:%s  当前日期:%s" % (urlData,d)
12     return HttpResponse(s)
13 
14 #定义404错误
15 def testHttp404(request):
16     raise Http404("哎呀,网页错误了")
17     return HttpResponse("ok")
18 
19 #获取请求数据 http://127.0.0.1:8000/get?name=adb&age=19
20 def showGetData(request):
21     s="上传的数据:姓名=%s,年龄=%s" % (request.GET['name'],request.GET['age'])
22     return HttpResponse(s)
23 
24 #处理响应的内容 http://127.0.0.1:8000/str
25 def showSomething(request):
26     #加入content后表示原样输出,content_type="text/plain;charset=utf-8"
27     r=HttpResponse("<h1>我是标题</h>",content_type="text/plain;charset=utf-8") 
28     #write是继续添加内容
29     r.write("<p>我是文章</p>")
30     return r
31 
32 #文件附件下载
33 def downloadFile(request):
34     r=HttpResponse('文件内容',content_type="text/text;charset=utf-8")
35     r['Content-Disposition']='attachment; filename="test.txt"'
36     r.write("
<p>我是下载下来的文件</p>")
37     return r
38 
39 #生成CSV文件
40 def writecsv(request):
41     r=HttpResponse(content_type="text/text")
42     r['Content-Disposition'] = 'attachment; filename="data.csv"'
43     #写入数据到csv文件内
44     w = csv.writer(r)
45     #第一行
46     w.writerow(['one',1,3,5])
47     #第二行
48     w.writerow(['two',2,4,6])
49     return r
50 
51 #返回Json字符串 http://127.0.0.1:8000/json
52 def writejson(request):
53     r=HttpResponse(content_type="application/json;charset=utf-8")
54     r.write({'name':'张三','data':[123,'adb']})
55     return r
56 
57 #重定向 http://127.0.0.1:8000/redirect
58 def useRedirect(request):
59     return redirect(showDate,urlData='123')

urls.py代码:

 1 from django.contrib import admin
 2 from django.urls import path
 3 from . import views
 4 
 5 urlpatterns = [
 6     #path('admin/', admin.site.urls),
 7     path('test<urlData>',views.showDate),
 8     path('my404',views.testHttp404),
 9     path('get',views.showGetData),
10     path('str',views.showSomething),
11     path('download',views.downloadFile),
12     path('csv',views.writecsv),
13     path('json',views.writejson),
14     path('redirect',views.useRedirect),
15 ]

使用响应模板

直接在视图中听过代码将内容写入响应,如果后期需要更改输出布局,则需要重新修改视图代码

from django.template.response import TemplateResponse #先导入模板函数

def useTemplateResponse(request):
    
return TemplateResponse(request,'info.html',{'name':'张三','age':'30'})

创建template文件夹,创建HTML文件

HTML文件内容:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>使用响应模板</title>
</head>
<body>
    <b>姓名:</b>{{name}}<br />
    <b>年龄:</b>{{age}}<br />
</body>
</html>

url.py文件添加path地址:path('usetemp',views.useTemplateResponse)

启动服务器,输入浏览器地址:

关注个人公众号:测试开发进阶之路

  

原文地址:https://www.cnblogs.com/zengxuejie/p/14096848.html