0

我刚刚在新的 Mac 上为现有的 Django 项目设置了环境。我确定代码本身没有问题(只是克隆了 repo),但由于某种原因,Django 似乎无法从数据库中检索数据。

  • 我知道正确的表和数据在数据库中。
  • 我知道代码库应该是这样的。
  • 我可以使用 Django shell 进行查询。
  • 尽管网页上缺少数据,Django 不会抛出任何错误。

我意识到在没有更多信息的情况下很难调试它,但我真的很感激能指点我正确的方向。我似乎找不到任何有用的日志。

编辑:

我刚刚意识到问题出在其他地方。不幸的是,在赏金仍然开放的情况下,我无法删除这篇文章。

4

1 回答 1

1

在没有看到任何代码的情况下,我只能提出一些可以帮助您调试问题的一般性建议。如果可以,请添加指向您的存储库的链接或数据库设置的一些片段,包括数据库查询的视图等...

调试视图

我建议的第一件事是在查询数据库的内部使用python 调试器。view如果您以前没有使用pdb过,它是一个救命稻草,它允许您在 Python 脚本中设置断点,然后在解释器中交互地执行代码

>>> import pdb
>>> pdb.set_trace()
>>> # look at the results of your queries

如果您使用的是 Django ORM,QuerySet则查询返回的数据应该包含您期望的所有数据。

如果没有,那么您需要在settings.py.

如果是这样,那么您可能不会将该对象返回给模板?不太可能正如您所说的代码是相同的,但请仔细检查您使用HttpResponse对象传递的对象。

调试数据库设置

如果您可以使用settings.pydjango shell 中的项目设置查询数据库,这听起来不太可能有问题 - 但就像一切都仔细检查一样。

你说你在mac上建立了一个新项目。以前在不同的操作系统上是什么?也许现在路径存在问题 - 为了让您的项目平台独立,请记住在使用os.path.join()文件路径时使用该方法。

那么用户名和密码详细信息呢......

调试模板

也许您的模板引用了错误的对象变量名称或对象属性。您提到过

尽管网页上缺少数据,Django 不会抛出任何错误。

这并没有真正告诉我们太多 - 引用Django 文档-

如果您使用不存在的变量,模板系统将插入 TEMPLATE_STRING_IF_INVALID 设置的值,默认设置为 ''(空字符串)。

因此,要检查模板可用的所有变量,您可以使用调试模板标签

{{ debug }}

可能更好的是使用django-debugging-toolbar - 这也可以让你检查你view正在做的 SQL 查询。

缺少模块

如果这是问题所在,我希望这会引发异常,但是您是否检查过您的新机器上是否有psycopg模块?

于 2014-03-10T00:37:53.680 回答