【问题标题】:Build HTML from Django View从 Django 视图构建 HTML
【发布时间】:2019-08-20 16:18:27
【问题描述】:

我需要从 Django 视图构建 HTML 正文,但我找不到正确引用 JPG 文件的解决方案(必须说 HTML 比这个大得多,但其他东西似乎对我有用 ):

我试过了:

from django.template import Template
...
html = Template('<IMG SRC="{% static "base/images/course/website-46-2.jpg" %}">')
return HttpResponse( html )

我得到这个错误:

Invalid block tag on line 1: 'static'. Did you forget to register or load this tag?

在 Django 模板中,我通过加载静态文件来解决这个问题:

{% 加载静态 %}

如何在 Python (Django View) 中执行此操作?或者任何其他建议都非常感谢。

我尝试了在本网站和其他网站上找到的不同解决方案,但似乎没有一个适合我。

Django 版本:2.2.1

【问题讨论】:

  • {% extends "name" %} ?
  • 不懂这个。

标签: python html django


【解决方案1】:

您可以使用 static 库作为内置库创建引擎。这使得它可以在模板中使用,而无需先调用{% load static %}

from django.template import Template, Context, Engine

engine = Engine(builtins=['django.templatetags.static'])
template = engine.from_string('<IMG SRC="{% static "base/images/course/website-46-2.jpg" %}">')
return HttpResponse(template.render(Context()))

【讨论】:

  • 有了这个,我得到这个错误:AttributeError at /course/1/ 'SafeText' object has no attribute 'get'
  • 大概是这样的(无效视图):stackoverflow.com/questions/43987462/…
  • 不太可能,因为我有这样的视图: course( request, question_id ) 并且它在没有建议的代码的情况下工作。
  • 您使用的是哪个版本的 Django,哪一行导致了异常?这适用于 Django 1.11。
  • 啊,我想我知道这个问题了。我没有意识到你的函数是一个视图(返回一个响应),我认为它是一个实用函数。我已更新我的答案以返回响应对象而不是纯文本。看看这是否有效。
【解决方案2】:

您是否在 settings.py 中设置了 STATIC_URL?您可以通过以下方式做到这一点:

STATIC_URL = '/static/'

然后您的图片将在'your_app/static/base/images/course/website-46-2.jpg' 下找到。

文件夹结构是否遵循此约定?如果没有,您可以将 STATIC_URL 设置为 '/base/'

【讨论】:

  • 是的,我有那个设置,STATIC_URL = '/static/'
  • 其实我的应用叫做“base”,我的图片有效路径是:“project_name\base\static\base\images\course\website-46-2.jpg”
  • 你试过html = Template('{% load static %}&lt;IMG SRC="{% static "base/images/course/website-46-2.jpg" %}"&gt;')
  • 也不起作用,在页面上给出奇怪的结果:'>
【解决方案3】:
def startchat(request):
   template=loader.get_template('app1/chatbot.html')
   return HttpResponse(template.render())

此函数将 html 页面加载到 Django 中。 在此之前,我们需要导入模块

from django.template import loader

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-18
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2021-04-27
    相关资源
    最近更新 更多