Django:如何使用静态文件(简单的情况下,jQuery)

问题描述:

我想在Django网站上使用jQuery。我需要包含jQuery.js库。我已经阅读了很多关于Django静态文件的知识,但我不认为有人问过这个问题。我只有三个静态文件可供使用:jquery.js,anothersmallfile.js和styles.css。静态文件服务Django的文档说:Django:如何使用静态文件(简单的情况下,jQuery)

“对于小项目,这是不是一个大问题,因为你可以只保留静态文件放在你的Web服务器可以找到它link

我想。到“只是让它们在我的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 我的web服务器(用于生产)所以现在我必须使用Django静态文件解决方案吗?

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

编辑,之前我获得更多downvotes:我说的是从页面这段话上面链接:

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

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

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

这就是django.contrib.staticfiles是:从每个应用程序(和您指定的任何其他地方)到可以很容易地在生产中提供一个位置的收集静态文件。

/////////////////// 着重强调

所以,如果这就是django.contrib.staticfiles是,有什么简单的解决方案?我争辩说这是以前的问题的重复。

+0

当你说Django是你的网络服务器时,这是否意味着你正在使用'manage.py runserver'作为你的生产服务器?如果是这样,你应该改变这种情况,因为文档说它并不意味着以这种方式使用:https://docs.djangoproject.com/en/1.3/intro/tutorial01/#the-development-server – murgatroid99

+0

重复十亿个先前的问题。 –

+0

我还没有生产服务器,我只是想让它工作。因为我的静态文件需求非常简单,所以我希望我可以使用所提到的任何内容,“因为您可以将静态文件保存在您的Web服务器可以找到它的某个位置”,而不是这个复杂的解决方案,我需要在生产中进行更改无论如何。 – Tr3y

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

在评论后编辑我真的不理解你的评论。您可以通过静态服务视图进行开发,也可以使用生产服务器。但是你说你没有生产服务器。当你得到一个,无论是Apache或Nginx或其他,你把你的静态文件在一个目录中,并告诉该服务器从那里提供文件。那的简单解决方案。静态文件应用程序与您引用的文档完全相同,适用于在不同应用程序中获取大量文件的情况(并且它简化了从开发到生产的转换,而不是像您认为的那样使其复杂化)。

+0

我在我的问题中重申了这个事实。澄清:我不知道如何从开发到生产,如果我可以消除任何复杂的转变,我想。我特别询问了我读过的文档中提到的简单解决方案。如果你告诉我没有这样的解决方案存在,那么我没有错,文档是。 – Tr3y

+0

好的,很明显。谢谢。 – Tr3y

假设您的应用程序是www。

  1. setting.py - > STATIC_ROOT = '静态/'
  2. 使DIR WWW /静态
  3. make文件WWW /静态/ some.html
  4. 在浏览器本地主机:8000 /静态/一些。 html

就是这样。

+1

并确保在生产级部署中使用./manage.py collectstatics - 生产服务器不会为静态文件调用django dispatcher,因为直接为它们提供服务会更快。 – qdot