zoukankan      html  css  js  c++  java
  • Django -- view(视图)

    view(视图)

    一个视图函数,或者简短来说叫做视图,是一个简单的Python函数,它接受web请求,并且返回web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你的Python目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了能够把代码放在某个地方,惯例是把视图放在叫做views.py的文件中,然后把它放到你的项目或者应用目录里。

    下面是一个返回当前日期和时间作为HTML文档的视图:

    1 from django.http import HttpResponse
    2 import datetime
    3 
    4 def current_datetime(request):
    5     now = datetime.datetime.now()
    6     html = "<html><body>It is now %s.</body></html>" % now
    7     return HttpResponse(html)

    让我们逐行阅读上面的代码:

    • 首先,我们从 django.http模块导入了HttpResponse类,以及Python的datetime库。
    • 接着,我们定义了current_datetime函数。它是一个视图函数。每个视图函数都应接收HttpRequest对象作为第一个参数,一般叫做request。
    • 注意视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime,是因为这个名称能够精确地反映出它的功能。
    • 这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都要返回HttpResponse对象

    HttpResponse函数:

    在views.py里面,我们可以使用HttpResponse直接给页面返回一个字符串。调用HttpResponse直接给页面返回一个字符串。

    1 from django.http import HttpResponse
    2 
    3 def hello(request):    
    4 
    5 return HttpResponse("Hello World!")

    render函数

    render 是一个主要用来返回一个html模板页面的函数。

    render(request,template_name,context=None,content_type=None,status=None,using=None)

    此方法的作用是:接收到一个请求,结合一个给定的模板和一个给定的context上下文字典,并返回一个渲染后的 HttpResponse 对象。通俗的讲就是接收到一个请求,然后指定好一个html模板,并把上下文context字典中的内容, 加载进templates_name中指定的模板文件, 并通过浏览器渲染呈现.

     1 request: 是一个固定参数, 就是指通过接受到的通过wsgi处理过的客户端浏览器请求数据。
     2 
     3 template_name:templates中定义的HTML文件, 要注意路径比如'templatespollsindex.html', 参数就要写‘pollsindex.html’
     4 
     5 context: 要传入上下文中用于渲染呈现的数据, 默认是一个字典格式,键即下文html模板中需要被替换的元素,键值即在views视图函数中需要传到html模板中变量需要替换成的值。
     6 
     7 content_type: 生成的文档要使用的MIME 类型。默认为DEFAULT_CONTENT_TYPE 设置的值。
     8 
     9 status: http的响应代码,默认是200.
    10 
    11 using: 用于加载模板使用的模板引擎的名称。
    参数详解

    redirect 函数

    redirect 函数的主要作用是重定向

  • 相关阅读:
    二叉树的递归遍历 The Falling Leaves UVa 699
    二叉树的递归遍历 天平UVa839
    二叉树的递归遍历 Tree UVa548
    通过缓冲传递数据-结构体
    fread读取文件(二进制文件)
    socket编程--相关函数--sendto();read();
    socket 编程--sockaddr与sockaddr_in区别与联系(转)
    百度Apollo 尝试
    检测服务器端口是否被占用
    qt5的.ui文件在VS2010中无法编译问题
  • 原文地址:https://www.cnblogs.com/kxsph/p/9458825.html
Copyright © 2011-2022 走看看