2017-02-25 64 views
0

我有从Django 1.8升级到Django 1.10的问题:静态文件不再加载。如何管理静态文件从Django 1.8到Django 1.10

我的模板看起来是这样的:

{% load staticfiles %} 

<!DOCTYPE html> 
... 
    <link href="{%static 'file.css' %}" rel="stylesheet"> 
... 

然后在我的文件settings.py,我有 'django.contrib.staticfiles' 作为安装的应用。 DEBUG设置为True,并且我有:

STATIC_URL = os.path.join(BASE_DIR, 'static/') 
STATIC_ROOT= os.path.join(BASE_DIR,'static/') 
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static/'), "./", ] 

但是,当生成html时,它就像%静态已不再有效果。它被替换为空字符串(与Django 1.8相同,其中%静态被STATIC_URL的内容替换)。有谁知道如何解决这一问题 ?

回答

1

您是否可以添加更新urls.py(mainproject/urls.py),一旦您使chnages运行python manage.py collectstatic命令。

from django.conf.urls import url, include 
from django.contrib import admin 
from django.conf import settings 
from django.conf.urls.static import static 
urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
] 
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

settings.py 
=================== 
import os 

# Build paths inside the project like this: os.path.join(BASE_DIR, ...) 
def root(folder): 
    return os.path.join(os.path.abspath(os.path.dirname(__file__)), '..',folder) 

STATIC_ROOT = root('staticstorage') 
STATIC_URL = '/static/' 
# Additional locations of static files 
STATICFILES_DIRS = (
    root('static'), 
) 
+0

谢谢,实际上只有行:STATIC_URL ='/静态/'是有用的。这很奇怪,但是当我编写类似STATIC_URL ='c:/ toto/static'的东西时,它会被计为空字符串,但如果我编写例如'/ toto/static'则不会。也许这个':'字符有点麻烦。 – Archimondain

+0

同样在这种情况下,区别不在于Django1.8和Django 1.10之间,而是在Linux(安装Django 1.8)和Windows(安装Django 1.10)之间。 – Archimondain

+0

我实际上被我的浏览器的缓存系统困住了:确实需要settings.py文件的所有行,但我不明白为什么会这样。 – Archimondain