【问题标题】:How to serve files in Django without "/static" prefix如何在没有“/static”前缀的情况下在 Django 中提供文件
【发布时间】:2017-10-16 15:06:52
【问题描述】:

我有一个 Angular 2 前端,在 html js、css 和其他文件(例如图像)之间已经编写了链接,我想使用 Django 来提供这些链接。

Angular 2 的结构如下所示:

-->index.html
-->test.js
-->test.css

HTML 文件:

<!doctype html>
<html lang="en">
    <head>
         <link href="test.css" rel="stylesheet"/>
    </head>
<body>
          <script type="text/javascript" src="test.js">
</body>

我不想从 Angular 2 应用程序中更改给定的路径,而是想知道在不使用“/static//”或“/static/”的情况下在 django 中提供这些文件的解决方法每个链接中的前缀或模板标签。

更新

尽量避免

<!doctype html>
<html lang="en">
    <head>
         <link href="/static/test.css" rel="stylesheet"/>
    </head>
<body>
          <script type="text/javascript" src="/static/test.js">
</body>

并避免这种情况:

{% load static %} <link href="{% static "example.jpg" %}" rel="stylesheet"/>

换句话说,尝试调整 django 内置网络服务器以提供 angular 文件,而不将它们调整(“静态”前缀或标记)到 django。

提前谢谢你!

【问题讨论】:

  • 提供静态文件的正确方法不是硬编码,例如:{% load static %} &lt;img src="{% static "my_app/example.jpg" %}" alt="My image"/&gt;。当您谈论避免/static 时,您的意思是什么@ 发布示例。
  • @danihp 感谢您的评论。我刚刚用示例更新了问题。

标签: django angular django-staticfiles


【解决方案1】:

你说你想从 Django “提供你的文件”,但我认为你真的想从 Nginx 之类的东西上提供它们。例如,

location = /js/test.js {
    root /path/to/js/;
}

在你的 nginx 文件中。对于 Angular2 URL,您可以假装 Django 不存在。

【讨论】:

  • 谢谢。我也想过。但是,如果我也可以使用 django 内置网络服务器为 angular 应用程序提供服务,那就太好了。你知道如何调整 django 以避免使用静态前缀或标记吗?
  • 您可以创建一个视图,然后使用docs.djangoproject.com/en/1.11/ref/request-response/… 读取文件并将原始HTTP 输出发送到浏览器。但我不会推荐它。
  • @Hangon 内置的网络服务器非常适合测试和开发,但不建议将其作为实时部署的长期解决方案。由您决定这是否对您的项目有问题。
猜你喜欢
  • 1970-01-01
  • 2021-06-09
  • 2022-08-23
  • 2017-07-05
  • 1970-01-01
  • 2010-10-16
  • 2012-11-22
  • 2018-01-23
  • 2019-01-30
相关资源
最近更新 更多