1

我正在尝试在 Django 网站上使用 jQuery。我需要包含 jQuery.js 库。我已经阅读了很多关于 Django 静态文件的内容,但我认为没有人问过这个特定的问题。我只提供三个静态文件:jquery.js、anothersmallfile.js 和styles.css。关于静态文件服务的 Django 文档说:

“对于小型项目,这没什么大不了的,因为您可以将静态文件保存在 Web 服务器可以找到的地方。链接

我想“将它们保存在我的网络服务器可以找到它们的地方”,因为 Django 文档在其他地方清楚地声明(警告)他们的静态文件服务方法仅适用于开发环境。我只有几个静态文件,我只想要最简单的安全解决方案。

不幸的是,我无法让它工作。无论我把文件放在哪里,Django 都找不到它们。通过 Chrome Web 开发人员控制台进行调试,我看到我收到 404 错误:

GET http://127.0.0.1:8000/templates/polls/jquery.js 404 (NOT FOUND)

我是运行服务器的新手。我是否 A.) 需要告诉我的 urls.py 文件在哪里可以找到静态文件?或者问题可能是 B.) 我误解了这个问题 - Django我的网络服务器(用于生产)所以现在我必须使用 Django 静态文件解决方案?

让我的模板简单地识别与它们位于同一目录中的 .js 文件似乎并不难。我错过了什么吗?

编辑,在我得到更多反对之前:我正在谈论上面链接页面中的这段话:

/////////////////////

Django 开发人员主要关心 Web 应用程序的动态部分——为每个请求重新呈现的视图和模板。但是 Web 应用程序还有其他部分:呈现完整网页所需的静态文件(图像、CSS、Javascript 等)。

对于小型项目,这没什么大不了的,因为您可以将静态文件保存在 Web 服务器可以找到的地方。然而,在更大的项目中——尤其是那些由多个应用程序组成的项目——处理每个应用程序提供的多组静态文件开始变得棘手。

这就是 django.contrib.staticfiles 的用途:它将每个应用程序(以及您指定的任何其他位置)的静态文件收集到一个可以在生产中轻松提供的位置。

///////////////// 强调添加

因此,如果这就是 django.contrib.staticfiles 的用途,那么更简单的解决方案是什么?我认为这是对先前问题的重复。

4

2 回答 2

2

您需要更仔细地阅读该文档。该警告是针对生产的。在开发中,您确实使用该静态服务方法,即将它放在您的 urls.py 中。而且,该文档还将显示模板目录不是放置它们的正确位置:单独的静态或媒体目录是。

评论后编辑我真的不明白你的评论。您可以通过静态服务视图在开发中执行此操作,或者使用您的生产服务器。但是你说你没有生产服务器。当你得到一个,无论是 Apache 还是 Nginx 或其他什么,你将你的静态文件放在一个目录中,并告诉该服务器从那里提供文件。这就是简单的解决方案。与您引用的文档中完全相同的静态文件应用程序适用于当您在不同的应用程序中拥有大量文件时(它简化了从开发到生产的迁移,而不是像您想象的那样复杂化)。

于 2011-08-23T21:02:35.920 回答
0

假设你的应用是 www。

  1. setting.py -> STATIC_ROOT = '静态/'
  2. 使目录 www/static
  3. 制作文件 www/static/some.html
  4. 在浏览器 localhost:8000/static/some.html

就这样。

于 2012-09-06T11:05:38.887 回答