我试图将我的django 1.7项目更改为包含一个包含多个设置文件的设置文件夹,而不仅仅是一个settings.py文件。 我不知道如何正确配置静态文件的位置。我错过了什么?我的网站不再正常运行。
dev_settings.py
from unipath import Path
PROJECT_DIR = Path(__file__).ancestor(3)
MEDIA_ROOT = PROJECT_DIR.child("media")
STATIC_ROOT = PROJECT_DIR.child("static")
STATICFILES_DIRS = (
PROJECT_DIR.child("static"),
)
TEMPLATE_DIRS = (
PROJECT_DIR.child("templates"),
)
STATIC_URL = '/static/'
home.html的
{% load static from staticfiles %}
<a href="{% url 'bank:bank_home' %}"><img src="{% static 'images/logo-bank.png' %}" class="img-responsive navlogo" alt="My Bank"></a>
<script src="{% static 'js/bootstrap_js/bootstrap.min.js' %}"></script>
答案 0 :(得分:1)
与静态文件相关的重要设置如下:
STATIC_ROOT
- 定义collectstatic
管理命令聚合静态文件的完整路径(例如 / var / www / project / staticfiles / )。< / LI>
STATIC_URL
- 定义Django将在您的模板中替换上述路径的URL,以免您需要对其进行硬编码(通常为 / static / )STATICFILES_DIRS
- 一个元组或文件路径列表,供Django汇总文件,与任何特定应用无关(默认情况下,Django会自动查找并汇总static
下的所有文件任何已安装应用的目录 - 有关详细信息,请参阅STATICFILES_FINDERS
。请注意,这不应包括STATIC_ROOT
定义的路径;该路径用于Django复制文件以便为其提供服务的地方。其他设置默认值通常可以正常开始(Django 1.7的文档是here)。请确保在python manage.py collectstatic
之前运行python manage.py runserver
,以便将静态文件聚合到STATIC_ROOT
定义的位置。
您可以通过更改manage.py
中的以下行来设置项目设置文件的位置:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my.project.base_settings")
或者,如果你想使用另一个(在dev等中),你可以在--settings
运行manage.py
时传递:
python manage.py runserver --settings=my.project.dev_settings
请注意,使用的点符号对应于项目目录结构中相对于manage.py
的* .py文件。因此,上述第一个示例中文件的位置将为my/project/base_settings.py
。 docs中有更多详细信息。
答案 1 :(得分:0)
查看正在运行的Django实现并进行比较以找出您的错误可能会有所帮助。 这是一个包含多个设置文件的简单Django项目: https://github.com/marcofucci/cookiecutter-simple-django
(它是一个cookiecutter项目,可能对您有用 - 如果不是忽略它并在{{cookiecutter-repo-name}}中查找实际的django源代码)
另外,我推荐Django&#34;&#34;两个Scoops of Django&#34;。只是在几天前把它拿起来,爱它!
答案 2 :(得分:0)
我仍然不确定为什么我的设置不起作用。但是,为了解决这个问题,我使用https://github.com/marcofucci/cookiecutter-simple-django
创建了一个全新的项目答案 3 :(得分:0)
到底出了什么问题? 您是否将它们包含在url.py文件中?
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()