我有一个django应用程序,静态文件使用nginx服务。我想在项目中包括应用程序(功能)。
我想创建一个新应用程序,把文件放在静态文件夹下。(但我需要更改nginx conf以提供来自这些dir的文件)
project
|
|-templates
|-static
|
|-js
|-css
newapp
|
|-static
|
|-js
|-css
>
如果我们想从两个位置提供静态文件,如何更改nginx conf?
我当前的nginx配置如下
location /static/ { alias /myproject/location/static/; }
如果我们把所有文件都放在主项目中(静态、模板),维护起来会不会变得复杂?
有没有办法像
别名/myproject/*/static
对问题1的答复:
将特定应用的静态文件放在应用的文件夹中,而不是项目的“静态”文件夹中。
/project/
/polls/
/static/
/polls/
foobar.css
foobar.js
/templates/
/polls/
vote.html
/static/
specific-to-the-project.js
/templates/
specific-to-the-project.html
base.html
关键是你有一个静态
文件夹在你的应用程序的文件夹,它有一个文件夹与你的应用程序同名。
当您运行collectstatic
时,它将收集在这些文件夹中找到的所有文件。
注意,当引用文件时,您将执行类似于...
{% load staticfiles %}
{% static 'app/foobar.css' %}
对问题2的答复:
当您运行集合静态
时,它将收集所有文件并将其复制到一个由STATIC_ROOT
设置指定的中心位置。
对问题3的答复:
不,因为您不处理STATIC_ROOT
中的文件。您只对原始位置的文件进行处理,然后在准备好后运行收集静态
。
对问题4的答复:
你可以做一个符号链接。。
实际上,这就是staticfiles应用程序的用途。我建议对其进行改编,并在此处阅读:https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/
更新回复评论
最佳做法是这样做/
实例
/<project_root>
/polls
views.py
urls.py
...
/templates
vote.html
...
/static
/polls
foobar.css
foobar.js
/otherapp
views.py
urls.py
...
/templates
hello.html
...
/static
foobar.css
foobar.js
/<static_root>
(empty)
/<project_root>
/polls
views.py
urls.py
...
/templates
vote.html
...
/static
/polls
foobar.css
foobar.js
/otherapp
views.py
urls.py
...
/templates
hello.html
...
/static
foobar.css
foobar.js
/<static_root>
foobar.css
foobar.js
/polls
foobar.css
foobar.js
每个应用程序中静态文件夹的内容都复制到静态根目录中。
您将文件直接放在静态文件夹中,而不是再添加一个目录并将它们放在其中,从而存在文件名冲突的风险。
当你正在进行一个开源项目,并且不知道该应用程序将安装在哪里时,这一点更为重要。但这也被认为是最佳实践:)(我花了一段时间来适应它,但没有回头看。)
此外,只要INSTALLED_APPS中列出了民意调查,您就不需要向STATICFILES_DIRS添加民意调查/静态/民意调查。
这就是为什么我们有静态文件应用程序。将每个应用程序的资产放在该应用程序中,然后在部署时运行manage.py收集静态
,它们都将被收集在 /static/下的子目录中
问题内容: 这个问题已经被回答了好几次了,我已经看到了几乎所有相关的帖子,但是无法加载CSS文件。我在我的项目中有以下结构:中,我有以下代码: 在urls.py中,我有以下代码: 我在模板中使用它 我在做什么错?我应该做什么?例如应该在中添加任何内容?或在的设置中?请假设我是一个绝对的初学者。我真的需要一个答案。谢谢。 问题答案: 什么都不做的装饰器类如下所示: 然后您可以正常应用它:
问题内容: 我有一个具有以下结构的Web应用程序: 我已经设法使用nginx和wsgi运行Web应用程序,但是问题是没有提供静态文件,我的意思是,当我转到它们的URL时,服务器找不到它们。它给我404。 这是我的nginx配置文件部分: 缺少什么吗? 问题答案: 将此添加到你的nginx配置 用你应用的绝对路径替换时,你应该注意它不包含静态目录,并且其中的所有内容都将存储在中。
我从Apache切换到Nginx,使用apache,皮肤文件夹中的所有静态文件(图像、css、javascript)都直接由Apache提供服务。 示例: 我读了一些关于Nginx和Plone的文档,但我没有看到。下面是Plone.orgconf的例子:https://github.com/plone/plone-org-nginx/blob/master/nginx.conf 所以,我的问题是:
问题内容: 我正在为Django使用apache + mod_wsgi。 并且所有css / js / images都通过提供。 出于某种奇怪的原因,当其他人/朋友/同事尝试访问该网站时,jquery / css不会为他们加载,因此页面看上去很混乱。 我的html文件使用这样的代码- 我的nginx配置是这样的 有一个目录,其中有相应的&目录。 奇怪的是,当我访问它们时页面显示正常。 我已经清除了
问题内容: 所以这很尴尬。我有一个应用程序,该应用程序已集成在一起,现在它只提供一个静态HTML页面,其中包含指向CSS和JS的链接。而且我找不到文档中描述返回静态文件的位置。是的,我可以使用,但是我知道数据没有模板化。我还以为或者是正确的事情,但我不能让这些工作。同时,我正在打开文件,阅读内容,并装配Response具有适当mimetype的: 有人要为此提供代码示例或网址吗?我知道这将变得简单
我一直在处理将一个站点从Apache迁移到Nginx的过程,我快要失去理智了。虚拟主机不想提供静态资源(css、js等),我似乎不知道为什么。服务器块看起来像这样: 我错过了什么?我知道这是因为我对Nginx缺乏经验,但任何建议都将不胜感激。 谢谢 更新 这似乎与我以前遇到麻烦的化名有关。如果我将我的文档根指向别名位置(),并尝试呈现没有别名的静态内容,它会呈现良好的效果。一旦我在网址中输入别名.