【问题标题】:How to render a page from a multipage html in django如何在 django 中从多页 html 呈现页面
【发布时间】:2013-12-03 23:17:27
【问题描述】:

我正在使用 jQuery mobile,我在一个 html 文件 multipage.html 中有多个页面。我想render 来自multipage.html 的第2 页并传递一个可调用的字典。有人可以建议我在 Django 中执行此操作吗?

【问题讨论】:

  • 我有点迷路了 - 一个 html 文件中有多个页面?这是什么意思 - 你把几个 文档放在一个文件中?
  • 您是否要扩展您的视图上下文?如果是这样,请覆盖 View.get_context_data 方法。
  • @Odif Yltsaeb jQuery mobile 允许将多个页面保存在一个 html 文件中。请参阅此link中的“多页模板结构”
  • @McAbra 我正在尝试渲染作为多页模板一部分的页面并传递字典。请参阅this link的多页模板结构@
  • 嗯,我得到了 jquery mobile 的多页 html,但我仍然不明白它们与普通 html 文件相比有什么好处。只加载一次 html 然后用 javascript 填充它?为什么正常的 django 逻辑在这里不起作用?也许你真的应该忘记在这里使用 django 渲染 html 并使用一些基于 javascript 的模板引擎?

标签: django jquery-mobile django-templates django-views


【解决方案1】:

我在猜测你想要做什么,但在你的类视图中(因为不推荐使用基于函数的视图):

class MyView(TemplateView):
    template_name = "multipage.html"

    def get_context_data(self, **kwargs):
        context = super(MyView, self).get_context_data(**kwargs)
        context['pages_dict'] = [{'head' : 'foo', 'body' : 'bar' , 'foot' : 'smells'}, {'head' : 'foo2', 'body' : 'bar2' , 'foot' : 'smells2'}]
        return context

那么在multipage.html你可以:

{% for page in pages_dict %}
    <div data-role="page">
        {% for key, value in page.iteritems %} 
        <div data-role="{{key}}">
            {{ value }}
        </div>
    </div>
{% endfor %}

这个例子适合你吗?如果不是,请向我进一步澄清。

【讨论】:

  • 您的建议很有趣,谢谢。如果我可以只使用render_to_response 方法,并在传递可调用字典的同时呈现html 的第2 页,那就太好了。例如render_to_response('page2 from multipage.html',{'user': request.user})。我不确定如何“从多页 html 渲染 page2”。
  • 好吧,你不能做类似'来自multipage.html的第2页'之类的事情。但是你读过{% extends %}{% include %} 模板标签吗? docs.djangoproject.com/en/dev/ref/templates/builtins/#extends (#include) 使用它们,您可以制作单独的“部分”,例如“page1.html”、“page2.html”,并将它们扩展到您的主模板前。 'multipage_base.html'。这些标签可以采用变量,因此您可以将所需的页面名称传递给上下文并仅呈现那些指定的页面名称。
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2018-08-04
  • 2017-09-30
  • 2021-10-05
  • 1970-01-01
相关资源
最近更新 更多