【问题标题】:How to pass a request in template tag in Django?如何在 Django 的模板标签中传递请求?
【发布时间】:2012-05-24 07:59:56
【问题描述】:

我正在 Django 中开发一个基于 Web 的应用程序。我的应用程序充满了小部件(不是 Django 小部件),用于使用 Ajax 加载不同类型的数据。例如,“学生”名称小部件正在加载用户列表,“教师”名称小部件正在加载学校中所有教师的列表。为此,我想到了以下一些疑问:

  • 我正在使用模板标签(查看代码http://codepad.org/2Ug9Ct3n)。在这段代码中,当我在做if request and request.is_ajax():时,它向我显示了一个错误None object has no attribute ajax。问题是我无法正确包含请求。我已经对我的setting.py 进行了更改,即
     TEMPLATE_CONTEXT_PROCESSORS = (
     'django.contrib.auth.context_processors.auth',
     'django.core.context_processors.static',
     'django.core.context_processors.request',
     'django.core.context_processors.media',
     )
    

  • 如果那个东西没有解决方案,那么我可以在views.py 中编写整个模板标签部分吗?如何?
  • 如果有任何可能,请将它们作为答案发布!

    任何帮助都将是可观的

    【问题讨论】:

    • 这需要进入视图,而不是作为模板标签。
    • 请不要再问your unsolved question,只是通过更多细节来丰富问题(例如解释None object has no attribute ajax出现在哪里)
    • @okm 我已经删除了那个问题..并在这部分做更多解释
    • @BurhanKhalid 请告诉我如何:这个问题也是问题的一部分

    标签: django django-views django-templates


    【解决方案1】:

    确保您的视图(您尚未发布)正在使用RequestContext 呈现模板。如果您使用基于类的视图或render 快捷方式,这会自动发生。

    但是,如果您使用的是render_to_response,则需要执行以下操作:

    from django.template import RequestContext
    from django.shortcuts import render_to_response
    def some_view(request):
        # ...
        return render_to_response('my_template.html',
                                  my_data_dictionary,
                                  context_instance=RequestContext(request))
    

    【讨论】:

    • 感谢您的回复,我粘贴在键盘link上的代码写在模板标签中。没有为该方法编写的 views.py 。应该是吗?因为我已经在模板标签中定义的 ajax_print_widget 方法中做了 render_to_response。这是错的吗?
    • 模板标签包含在模板中。该模板由视图呈现。该视图必须使用RequestContext
    • 这是my widget_area.html。请看第 24 行 {% render_widget widget_settings %}。这里的 render_widget 是模板标签,并且已经定义了一个方法来渲染它(正如您在上面发布的代码中看到的那样)。我将在小部件中显示的内容来自 render_widget 和 ajax_print_widget 方法的组合。如您所见,我正在对 ajax_print..method 执行 render_to_response。现在你说要渲染这个包含这些模板标签的 template.html。我通过在 ..continue in next comment 中定义一个方法来做到这一点
    • views.py。但是要建立链接,我还需要为此模板添加一个 Url Pattern,我还做了urls.py 参见第 6 行。但是我没有任何数据来渲染这个模板,那么它应该在 my_data_instance 中是什么。无论如何我运行代码,但我仍然在 NONE 的模板标记中获取请求的值。我检查了 pdb.set_trace() ,它表明没有在浏览器中打开 plugin/widget_area.html 它没有进入方法,即 widget_data 。我应该怎么办 ?我没有任何合适的教程:(
    • 我没有时间再帮你解决这个问题了。我希望你能成功。
    猜你喜欢
    • 2017-05-17
    • 2012-05-30
    • 2018-12-20
    • 2021-02-15
    • 2015-06-22
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多