zoukankan      html  css  js  c++  java
  • django之render_to_response()

    由于加载模板、填充 context 、将经解析的模板结果返回为 HttpResponse 对象这一系列操
    作实在太常用了,Django 提供了一条仅用一行代码就完成所有这些工作的捷径。该捷径就是
    位于 django.shortcuts 模块中名为 render_to_response() 的函数。大多数时候,你将使
    用 render_to_response() ,而不是手动加载模板、创建 Context 和 HttpResponse 对象。
    下面就是使用 render_to_response() 重新编写过的 current_datetime 范例。
    from django.shortcuts import render_to_response
    import datetime
    def current_datetime(request):
    now = datetime.datetime.now()
    return render_to_response('current_datetime.html', {'current_date': now})
    大变样了!让我们逐句看看代码发生的变化:我们不再需要导入 get_template 、 Template 、 Context 和 HttpResponse 。相反, 我们导入 django.shortcuts.render_to_response 。import datetime 继续保留.在 current_datetime 函数中,我们仍然进行 now 计算,但模板加载、上下文创建、模板解析和 HttpResponse 创建工作均在对 render_to_response() 的调用中完成了。由于 render_to_response() 返回 HttpResponse 对象,因此我们仅需在视图中return 该值。
    render_to_response() 的第一个参数必须是要使用的模板名称。如果要给定第二个参数,那么该参数必须是为该模板创建 Context 时所使用的字典。如果不提供第二个参数,render_to_response() 使用一个空字典。

    我们在前面一小节用 Django 写了一个渲染模板文件的例子,虽然简单,但是有没有感觉比较复杂呢?比如我们来看看 views 层的文件 views.py:

    from django.template.loader import get_template
    from django.template import Context
    from django.http import HttpResponse
    import datetime
    
    def current_datetime_template(request):
        now = datetime.datetime.now()
        t = get_template('current_datetime.html')
        html = t.render(Context({'current_date': now}))
        return HttpResponse(html)
    

    import 这么多东西,还是比较麻烦。我们这里试下把它弄简洁一些,毕竟 Python 是门高效开发的语言,可不能这么复杂。

    render_to_response()

    前面我们使用 get_template() 方法代替繁杂的用代码来处理模板及其路径的工作。 但这仍然需要一定量的时间来敲出这些简化的代码。 这是一个普遍存在的重复苦力劳动。Django为此提供了一个捷径,让你一次性地载入某个模板文件,渲染它,然后将此作为 HttpResponse 返回。

    该捷径就是位于 django.shortcuts 模块中名为 render_to_response() 的函数。下面使用 render_to_response() 重新编写过的 current_datetime 范例。

    from django.shortcuts import render_to_response
    import datetime
    
    def current_datetime_template(request):
        now = datetime.datetime.now()
        return render_to_response('current_datetime.html', {'current_date': now})
    

    大变样了! 让我们逐句看看代码发生的变化:

    • 我们不再需要导入 get_template 、 Template 、 Context 和 HttpResponse 。相反,我们导入 django.shortcuts.render_to_response 。 import datetime 继续保留。
    • 在 current_datetime 函数中,我们仍然进行 now 计算,但模板加载、上下文创建、模板解析和 HttpResponse 创建工作均在对 render_to_response() 的调用中完成了。 由于 render_to_response() 返回 HttpResponse 对象,因此我们仅需在视图中 return 该值
  • 相关阅读:
    java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
    STS工具各版本下载网址
    SpringBoot访问不了JSP但却能进入后台
    springboot o.a.tomcat.util.scan.StandardJarScanner : Failed to scan [file:/D:/apache-maven-3.0.5[系统找不到指定路径]
    STS工具:mybayis连接oracle数据库
    springBoot怎样访问静态资源?+静态资源简介
    springboot注解
    8.12-14 df 、mkswap、swapon、swapoff、sync
    8.5-7 mkfs、dumpe2fs、resize2fs
    8.2-3 partprobe、tune2fs
  • 原文地址:https://www.cnblogs.com/zzblee/p/4267993.html
Copyright © 2011-2022 走看看