【问题标题】:geting rendered html text in django在 django 中获取渲染的 html 文本
【发布时间】:2013-12-15 14:26:30
【问题描述】:

如何在 django 中获取渲染的 html 文本?我需要它,因为我想在另一个模板变量中使用 html 文本。我的网站有一个主模板,它有两个部分,一个是内容,另一个是链接栏和...。在内容中,我想放置我呈现的 html,例如登录表单、新帖子和...。我怎样才能做到这一点?我的部分代码在这里:

def loginfrm(request):
    return render(request,'main.html',
                         {'content':renderdhtmltext()),
                          'colum':'links',}

我的确切目的是定义像renderdhtmltext() 这样的函数。 有没有为此内置的 django?

【问题讨论】:

    标签: python html django python-3.x


    【解决方案1】:

    处理站点范围内容的正确方法是编写自定义模板标签,这样视图就不必处理它。您的视图应该只处理特定于视图的内容。

    【讨论】:

    • 你能解释一下如何使用模板自定义标签来显示内容吗?我是 django 的业余爱好者,我不知道该怎么做。
    • 模板标签只是一段 Python 代码,它可以将变量(无论 Python 对象)添加到模板的上下文中,也可以返回要插入到模板中的文本或 html。您可以在 FineManual(tm) 中找到更多信息:docs.djangoproject.com/en/1.6/howto/custom-template-tags/…。不要害怕表面上的复杂性并进一步阅读,有两种最常见情况(包含标签和分配标签)的快捷方式。
    • 不需要自定义标签,模板继承有帮助。
    • @user995394 :模板继承不会让您访问任何不在上下文中的内容。模板标签会。
    【解决方案2】:

    render返回一个HttpResponse的实例,你可以通过response.content访问html内容。

    response = another_view(request)
    rendered_html_text = response.content
    

    DocHttpResponse

    更新:最好定义你的 base.html 并扩展它,把共同的东西放在基础上。

    【讨论】:

    • 我认为response.content 不符合他的要求。
    • 你的回答对我有用,但有没有更好的方法?我认为这有点糟糕。
    • 定义你的base.html 并扩展它,把共同的东西放到base中。
    • 但是告诉我如何将我的内容放在基本 html 中的指定位置?
    • 例如:你的base.html是"<form>...</form>{% block content %}{% endblock }",在你的main.html中是{% extends "base.html" %}{% block content %}blahblah{% endblock %},那么你在模板中重用了表单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多