如何在 Django 应用程序中使用来自预制 index.html 模板和 css 的相对路径?

Posted

技术标签:

【中文标题】如何在 Django 应用程序中使用来自预制 index.html 模板和 css 的相对路径?【英文标题】:How do I use relative paths from a pre-made index.html template and css in a Django app? 【发布时间】:2019-05-20 13:04:42 【问题描述】:

我正在使用预制的引导程序 index.html 和 css 表。在之前的文件夹结构中,index.html 和所有随附的文件夹(如 css、js、fonts、img 等)都在一个文件夹中。现在它们在两个地方,如下所示。当我从本地 Django 开发网络服务器将索引页面作为应用程序打开时,它可以正常加载索引,但页面上的所有相关链接都已损坏 - css、js、img 等...

我是 Django 新手。

以前的引导文件夹结构:

      - public_web_site
         - bootstrap_1
             - css
             - fonts
             - img
             - js
             - index.html

我希望 Django 项目按如下方式组织:

- myproject
  - polls
  - myproject_django
  - public_web_site
     - static
          - public_web_site
             - bootstrap_1
                 - css
                 - fonts
                 - img
                 - js
          - admin
      - templates
          - public_web_site
             - index.html
          - admin           
      - admin.py
      - apps.py
      - models.py
      - urls.py
      - views.py

这行得通:

% load static %
<link rel="stylesheet" type="text/css" href="% static 'public_web_site/css/bootstrap.min.css' %">

但事实并非如此:

 <link rel="stylesheet" href="css/bootstrap.min.css">    

Not Found: /pub_boots/css/bootstrap.min.css

重新陈述问题:是否可以在某个地方添加变量或路径名以允许预制模板运行,而无需我编辑每个相对链接以使用 Django % static % 路径?还是有一种更简单/更好的方法可以将预制的引导网站放入 Django 应用程序中?

【问题讨论】:

【参考方案1】:

如果您在 HTML 中省略前面的“/”路径,它将查找从当前 URL 开始的文件。示例:

如果你从“http://www.example.com/some-directory/somepage.html”调用“css/bootstrap.min.css”

浏览器会请求:http://www.example.com/some-directory/css/bootstrap.min.css

您没有发布引荐来源网址,因此可能需要检查一下。为了安全起见,我总是使用绝对路径,尤其是因为我使用了 mod-rewrite。

【讨论】:

我认为两种情况下的引荐来源网址是不同的——一种使用 Django % static % 变量,另一种是纯 html。而且由于基本文件夹结构已更改(索引曾经位于带有 img、js、css 文件夹的文件夹中),现在 html 路径不起作用。我在问是否有一种简单的方法可以添加新路径,这样我就不必更改所有链接。您的回答激发了一种可能的解决方法 - 可以移动 index.html。但我认为这会破坏 Django 中的模板引擎:) 感谢您的回答,我用您关于相对 URL 的要点更新了问题 - 希望更清楚一点。 也许创建指向资产目录的符号链接?当然,这需要 shell 访问您的托管服务器!

以上是关于如何在 Django 应用程序中使用来自预制 index.html 模板和 css 的相对路径?的主要内容,如果未能解决你的问题,请参考以下文章

Django:项目使用来自 REST API 的数据,如何在这个系统中使用外部应用程序?

如何在通过 pip 安装的应用程序中包含 django 模板?

如何在 Django 中为“in”SQL 子句传递值列表

如何在 django 聚合中使用 IN CONDITION

从脚本更改预制颜色

如何在 django 中显示来自 chartjs 视图的数据?