微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在哪里保持静态文件在Django的应用程序,如何从Nginx的多个位置服务器的静态文件

我有一个django应用程序,静态文件是使用Nginx服务的。 我想包括应用程序(function)在项目中。

我想创buildnewapp并将文件放在静态文件夹下。 (但我需要改变Nginx的conf来服务这些目录中的文件

project | |-templates |-static | |-js |-css newapp | |-static | |-js |-css

这是保持静态文件,模板(在应用程序?(有testing下我觉得更清楚的应用程序)的首选方法))

如果我们想要从两个位置提供静态文件如何更改Nginx conf?

Django:丑陋的pipe理界面

Django WGSIpath

Apache mod_wsgi错误禁止没有权限访问/在此服务器上

django-gunicorn-Nginx502坏的网关

Djangopipe理站点不显示CSS样式

我目前的Nginx conf就像

location /static/ { alias /myproject/location/static/; }

如果我们把所有的filse放在那个主要的项目(静态,模板)中,维护起来会不会变得复杂?

有没有一种方法可以匹配

别名/ myproject / * /静态

使用python处理dynamic电子邮件地址

将SSL证书添加MysqL泊坞窗容器

如何在Windows Vista上设置django-admin.py?

成功执行Django python命令的* only *方法是使用“python … PATH … django-admin.py ”。 为什么不能减less?

OperationalError在/试图写一个只读数据库

问题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

关键是您的应用程序文件夹中有一个static文件夹,并且其中的文件夹与您的应用程序具有相同的名称

当您运行collectstatic ,它将收集在这文件夹中找到的所有文件

请注意,引用文件时,你会做类似…

{% load staticfiles %} {% static 'app/foobar.css' %}

问题2的答案:

运行collectstatic ,它将收集所有文件并将其复制到由STATIC_ROOT设置指定的一个中央位置。

问题3的答案:

不,因为您不处理STATIC_ROOT的文件。 您只能在原始位置处理文件,然后在准备就绪时运行collectstatic 。

问题4的答案:

你可以做一个sym链接..

实际上,这就是staticfiles应用程序的用途。 我建议调整它,并在这里阅读: https : //docs.djangoproject.com/en/dev/ref/contrib/staticfiles/

更新回答评论

最佳做法是执行/<project_root>/polls/static/polls/foobar.css而不是/<project_root>/polls/static/foobar.css 。 然后从你的模板通过{% static 'polls/foobar.css' %}而不是{% static 'foobar.css' %} {% static 'polls/foobar.css' %}来访问foobar.css。 看下面的例子。

在运行collectstatic之前

/<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)

在运行collectstatic之后

/<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

每个应用程序中的静态文件夹的内容都被复制到STATIC_ROOT目录中。

您可能会将文件直接放在静态文件夹中,然后再添加一个目录并将其放在那里,从而导致文件名冲突。

当您正在开发一个开源项目并且不知道应用程序的安装位置时,这一点更为重要。 但它也被认为是最佳做法:)(我花了一段时间去适应它,但没有回头看。)

另外,只要在您的INSTALLED_APPS中列出了“民意调查”,您就不需要为STATICFILES_Dirs添加“民意调查/静态/民意调查”。

这就是为什么我们有staticfiles应用程序 。 将每个应用程序的资产放在该应用程序中,然后在部署上运行manage.py collectstatic并将它们全部收集到/ static /下的子目录中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐