定义视图
视图是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)
启动服务器,输入浏览器地址:
关注个人公众号:测试开发进阶之路