【问题标题】:Using Django view variables inside templates在模板中使用 Django 视图变量
【发布时间】:2011-03-04 15:09:09
【问题描述】:

这是一个相当基本的问题(我是 Django 新手),但我在模板内的视图中使用变量集时遇到问题。如果我在视图中初始化一个字符串或列表(即 h = "hello"),然后尝试在模板中调用它:
{{ h }}
既没有输出也没有错误。同样,如果我尝试在模板中使用不存在的变量:

{{ asdfdsadf }}

再次没有报告错误。这是正常的吗?以及如何在我的模板中使用我的变量。谢谢!

【问题讨论】:

    标签: python django templates views


    【解决方案1】:

    为了访问模板中的变量,它需要位于用于呈现该模板的上下文中。我的猜测是您在渲染模板时没有将上下文字典传递给模板。

    http://docs.djangoproject.com/en/dev/topics/http/shortcuts/#render-to-response

    此处引用的“字典”是一个字典,其中包含您希望在上下文中可用的所有变量。例如:

    return render_to_response('your_template.html', {'h': h})
    

    就“无错误”错误而言...这是无效模板变量的默认设置。如果您愿意,可以在项目的设置中更改它。

    http://docs.djangoproject.com/en/dev/ref/settings/#template-string-if-invalid

    【讨论】:

      【解决方案2】:

      你也可以使用

      return render(request, 'your_template.html', {'h':h, 'var1':var1})
      

      参考https://docs.djangoproject.com/es/1.9/topics/http/shortcuts/上的最新手册

      【讨论】:

        【解决方案3】:

        是的!这个是正常的。模板中的此类错误会静默失败,这在 Django 中是预期的。

        要正确渲染模板,请使用render_to_response('your_template.html', {'h':h})(如果您的上下文字典很大,还有一个讨厌的快捷方式render_to_response('your_template.html', locals())

        这里有一些示例说明:http://www.djangobook.com/en/beta/chapter04/(“如何处理无效变量”部分)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-07-01
          • 2018-01-14
          • 1970-01-01
          • 2015-05-23
          • 2014-07-15
          • 2014-07-23
          • 2016-02-02
          相关资源
          最近更新 更多