【问题标题】:Why absolute paths in Django settings为什么在 Django 设置中使用绝对路径
【发布时间】:2015-02-20 18:04:49
【问题描述】:

我注意到在 Django 的设置文件中,有一条注释告诉用户使用模板目录的绝对路径。假设它会使使用相对路径更便携,这是为什么呢?

TEMPLATE_DIRS = (
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    )

【问题讨论】:

  • 如果我猜的话,为每个请求评估相对路径比绝对路径更昂贵。实际上你永远不会做C:/www/... - 你会做类似PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))的事情,并使用这个设置作为路径其余部分的前缀。

标签: django path settings


【解决方案1】:

如有疑问...请查看文档。根据Django Docs

◾使用绝对路径(即从文件系统的根目录开始的目录路径)是最简单的。但是,如果您想更加灵活和解耦,您可以通过动态构造 TEMPLATE_DIRS 的内容来利用 Django 设置文件只是 Python 代码这一事实。

因此,为了确保可移植性,同时确保使用绝对路径,您可以动态生成路径,以避免走上硬编码路径的糟糕道路。正如@karthikr 在他的评论中所说,您可以这样做,

TEMPLATE_PATH = os.path.join(PROJECT_PATH, 'templates')
TEMPLATE_DIRS = (
    TEMPLATE_PATH,
)

'templates' 是您项目中的一个目录,其中包含您的各种 html 模板。

【讨论】:

  • 我确实检查了文档,它不在那里。您链接到的 Django 书甚至说它(书)已经过时了。
  • @wobbily_col 我刚刚更新了 Django 文档的链接,它说的引用与旧版本的引用相同。您关于使用相对路径提高可移植性的问题得到了以下事实的回答:由于可以使用 Python 动态定义绝对路径,因此使用绝对路径时不会损失可移植性。
猜你喜欢
  • 2013-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-17
  • 2021-10-29
  • 2023-03-03
相关资源
最近更新 更多