2012-10-18 25 views
0

我正在学习django,而且我已经有一些noobish问题。我不能指向我的静态文件夹,我尝试了所有的组合,观看的人做在YouTube上的教程等如何指向django中的静态文件夹

我的settings.py看起来是这样的:

STATIC_ROOT = '/home/peter/brewery/static/' 
    TEMPLATE_DIRS = '/home/peter/brewery/mysite/templates/' 

其中啤酒厂/是文件夹含有的mysite /静态/,mysite的是文件夹中

django-admin.py startproject 

其中settings.py也住创建...

似乎/的模板文件夹正确映射,因为页面使用适当的模板进行渲染,所以它不能访问/ static/css /文件夹中的css。我显示在我的模板中的路径这样的css

<link ... href='/static/css/brewery.css' /> 

我也试图让我的电脑上的href绝对路径,它不起作用。

我使用Django 1.3和正在运行

+0

你可以尝试在你的'href'中用'{{STATIC_URL}}'代替'/ static /'路径吗?另外,如果您使用某些开发人员工具进行调试,是否可以使用该网址的任何变体来访问CSS文件 - 也许您已关闭一个或两个文件夹? –

+0

你看到这与devserver或apache /类似的网络服务器? – Rohan

+0

你的urls.py的外观如何?你可以在这里发布吗? –

回答

4

1 Django提供服务器(蟒蛇manage.py runserver命令) - 在你的设置文件,定义一个静态的URL和静态根这样的:

STATIC_URL = '/static/' 

2 - 设置DEBUG = True

3 - 确保您的TEMPLATE_CONTEXT_PROCESSORS变量包括django.core.context_processors.static

4 - 参考它在你的模板一样......

<link ... href='{{ STATIC_URL }}css/brewery.css' /> 

来源:https://docs.djangoproject.com/en/dev/howto/static-files/

+1

+1请注意,如果您重写该方法并且不创建空的上下文字典来填充,那么您的'TemplateView'(和继承者)必须调用超类''get_context_data()'。 – Kimvais

1

在调试模式STATIC_ROOT不使用,但staticfiles_urlpatterns()从各个不同的应用程序提供静态文件。将您的静态文件放入您的某个应用程序的static/目录中,或者在您的设置中定义STATICFILES_DIRS,并将该网站的静态文件放在那里。

STATIC_ROOT只是所有静态文件是从所有的应用程序收集和STATICFILES_DIRS当你调用的位置:

python manage.py collectstatic 

而且只有在生产环境中使用。