在PythonAnywhere Web选项卡中:
URL: /static/
Path: /home/username/project/static
在settings.py中:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
...
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'project/static'),
)
在模板中:
{% load staticfiles %}
<link type="text/css" href="{% static 'MyApp/style.css' %}" />
<link type="text/css" href="{% static 'project/style.css' %}" />
...
<script type="text/javascript" src="{% static 'MyApp/script.js' %}" ></script>
我跑:
python manage.py collectstatic
将所有静态文件成功复制到/home/username/project/static
,但是我为所有静态文件收到404错误。我只在PythonAnywhere上出现此错误。本地主机上的一切运行正常。
生成的html和404错误表示正在以下位置搜索文件:
http://username.pythonanywhere.com/static/MyApp/style.css
http://username.pythonanywhere.com/static/project/style.css
http://username.pythonanywhere.com/static/MyApp/script.js
这是我的预期,所以我假设我的误解在于这些目录实际上位于PythonAnywhere中。
我是Django的新手。请参阅我的问题:How do you link to site-wide static files in django 1.8?以获取有关我的静态文件结构的更详细说明。
P.S。我在PA的virtualenv中使用Django 1.8,所以请不要弃用/过时的答案。
更新:
项目结构:
project/
project/
static/ //STATICFILES_DIRS
project/
style.css //site-wide style sheet
MyApp/
static/ //auto-search by {% static %} tag in local dev
MyApp/
style.css //app-specific stylesheet
script.js //app-specific js
static/ //STATIC_ROOT for production
project/ //copied by collectstatic
... //same as above
MyApp/ //same as above
... //same as above
答案 0 :(得分:1)
令人尴尬......忘记重新加载PA。
为了将来参考, 是如何根据1.8文档配置PA和django 1.8静态文件的。
别忘了重装!
答案 1 :(得分:0)
STATIC_ROOT
和STATICFILES_DIRS
不应指向相同的路径。 STATIC_ROOT
是复制文件以便为生产环境提供服务的地方,通常由Apache或Nginx提供。
STATICFILES_DIRS
由本地开发期间的静态应用程序提供。
我通常构建我的项目:
my_project/
my_project/
static_assets/ <- STATICFILES_DIRS
images/
css/
less/
js/
static/ <- STATIC_ROOT
templates/
例如,css文件的链接如下所示:
{% static 'css/foo.css' %}
忽略STATICFILES_DIRS
中指定的顶级目录。从示例代码的外观来看,您的{% static %}
路径似乎没有指向正确的位置。
有关详细信息,请参阅static files app docs。