【问题标题】:where am I being limited?我在哪里受到限制?
【发布时间】:2014-01-11 20:51:50
【问题描述】:

我的 views.py 中有一段代码用于 django 应用程序:

for i in range(0,10):
    row = cursor.fetchone()
    tablestring = tablestring + "<tr><td>" + row[0] + "</td><td>" + + str(row[3]) + "</td></tr>"

当我加载页面时这工作正常,但如果我将范围更改为 (0,20) 或更高的值,我只会得到一个空白页面。我的问题是:是什么导致了这种限制?是 python 或 django 还是主机(pythonanywhere)?

另外,我刚开始使用 django,我知道这可能不是最好的代码。如果您有任何建议使其更整洁或更高效,我们将不胜感激。

感谢您的帮助

编辑:这是我的查询:

cursor.execute("""SELECT title, movie_url, movie_id, cScore  FROM movies""")

【问题讨论】:

  • 请出示您的 SQL 查询。你有理由在 django ORM 上使用光标吗?
  • 我已添加查询。我不熟悉 django ORM。它有什么作用?
  • 当页面返回空白时,你会得到什么 http 状态?
  • 页面仍在加载中。如果我在 html 文件中添加其他内容,它将显示,但 views.py 中的内容不会

标签: python django pythonanywhere


【解决方案1】:

您真的应该使用django orm 并将这些表格标记写在template 中,按照此tutorial 了解基本概念

【讨论】:

  • 我只是快速浏览了该教程。有没有办法使用我目前在 mysql 数据库中的数据制作模型?
  • 模型不描述数据库中包含的数据,只描述表模式。所以是的,你应该没有问题。
  • 这看起来会有所帮助。感谢您的回答
【解决方案2】:

我的第一个猜测是少于 20 行,所以一旦你用完它们 row 将是 None 并且你尝试索引它会引发异常。

至于改进代码:

就像 Yossi 建议的那样,您可能应该使用 ORM。 ORM(对象关系映射器)允许您以更加面向对象的方式访问数据库,这可以使代码更简洁,并避免与参数转义相关的错误(另一方面,如果您想这样做可能并不理想创建非常复杂的查询,因为 SQL 仍然是最好的恕我直言)。

我也同意 Guy 的观点,即您应该使用模板系统而不是连接 HTML 字符串。

【讨论】:

    猜你喜欢
    • 2018-08-12
    • 2012-07-04
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多