• 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)

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

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

      

  • 相关阅读:
    python selenium-webdriver 执行js (八)
    python selenium-webdriver 等待时间(七)
    python selenium-webdriver 处理JS弹出对话框(六)
    python selenium-webdriver 元素操作之键盘操作(五)
    python selenium-webdriver 元素操作之鼠标操作(四)
    Jmeter 设置全部变量(十三)
    Jmeter 执行Python代码(十二)
    Jmeter Java Request (十一)
    Jenkins进阶-定时任务(17)
    JMeter 设置间隔时间(十)
  • 原文地址:https://www.cnblogs.com/zengxuejie/p/14096848.html
Copyright © 2020-2023  润新知