【问题标题】:Using Python to Write inside Django/HTML {Block}使用 Python 在 Django/HTML {Block} 中编写
【发布时间】:2015-06-12 17:50:11
【问题描述】:

我有一个评估用户输入的 Python 程序;例如,名字和姓氏。我想在名称未注册时显示到 HTML 文件。如何在 HTML 中显示此类信息?这个想法是“自动生成” HTML 页面,以便我的 views.py 可以显示内容。

期望的输出:

以下名称未注册:

  • Name_One
  • Name_Two
  • Name_Three

我知道 Django 有 {% block %} 标签或 {{ variable }} 标签,但我不确定如何在 Python 中使用它或者它是否是有效的语法。

示例 Python 程序

def checkDB ():
....
    if re.search (self.name, db):
        print ('Name exists.')
    else:
        print ('Cannot find names.')
        with open (templates/response.html', 'a') as html:
            html.write (self.name)

示例 HTML 文件

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Page Title</title>
</head>
<body>
    <h3>The following name(s) are not registered:</h3>
    <ul>
        <li>{% block content %}{% end block %}</li>
    </ul>
</body>
</html>

更新

  • Django Views 将循环浏览表单并获取数据。它会 然后写入一个文本文件,然后调用我的 main() 程序。
  • Main () 将循环遍历文本文件,然后将各个信息传递给 checkDB 类,在该类中处理数据。
  • checkDB 将检查名称是否存在并写入 HTML 文件,以便 Django 视图可以向用户显示该错误。

希望这是有道理的。如果你有更好的方法,我完全赞成。

【问题讨论】:

  • 您是否打算在每次脚本运行时创建一个新的 html?或者脚本只运行一次,记录名称并将它们放在静态文件中。然后 django 视图将只呈现特定 url 的静态 html?
  • 没错。该程序将运行一次并附加到现有的 HTML 文件,以便 Django 视图可以显示它。我已将原始帖子更新为更具体,但如果您有更好的选择,请告诉我。谢谢。

标签: python html django


【解决方案1】:

我认为您可能正在寻找将模板呈现为字符串的方法。使用 Django,您可以使用位于模板加载器中的 render_to_string 函数来完成此操作...

from django.template.loader import render_to_string

def checkDB (self):
    ....
    if re.search (self.name, db):
        print ('Name exists.')
    else:
        return render_to_string('templates/response.html', {'name': self.name})

但是,我不确定您是否需要做任何不同或特殊的事情才能在 Django 应用程序的上下文之外使用此功能。

【讨论】:

  • 不幸的是,这就是我要解决的问题。如果我只是将 checkDB () 代码粘贴到我的视图中,那么我可以按照您的建议进行渲染。我只是不知道这是否是要走的“路”。如何在 Django 中处理表单集?都是在views.py中完成的吗?
  • 基本上是的,您需要在视图中处理它,或者能够传递与 Django 兼容的请求对象,以便能够获取表单集的发布数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多