在django中开发中加载静态文件时出现404错误

时间:2014-08-26 23:24:11

标签: django django-templates django-settings django-staticfiles

我正在尝试在django的开发环境中加载静态文件。我的设置如下所示:

STATIC_ROOT = '/MyProject/myapp/static/'
STATIC_URL = '/static/'
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
)

我的网站urls.py看起来像:

from django.conf import settings
import views

from django.conf.urls.static import static
admin.autodiscover()

urlpatterns = patterns('',

) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

我的标题 - include.html看起来像:

<link href="{% static 'css/mycss.css' %}" media="screen" rel="stylesheet" type="text/css">

我的css导演位于:

mysite&gt; static&gt; CSS

我收到错误:

  

localhost / static / css / mycss.css 404(未找到)

我做错了什么???

3 个答案:

答案 0 :(得分:4)

不需要文件查找器也不需要静态root。将djando.contrib.staticfiles应用添加到您的应用中。删除url映射并在项目根目录中创建该文件夹。它应该与您生成的链接一起使用。

所以代码:

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

或者将文件夹放在应用程序中。但是如果你这样做,你必须将静态URL称为:

{{ STATIC_URL }}

或者只使用/ static /。然后在django模板调用之后,添加文件路径。

如果您想在应用内使用它,请使用您正在使用的标签。特定文件的用途,如自定义样式表或js文件,但对于一般样式,更好地将它放在我告诉你的地方,否则如果你想使用它,你必须在每个应用程序中复制它。 / p>

答案 1 :(得分:0)

我需要将静态文件夹移动到应用程序。 django文档指定django将在每个应用程序中查找静态文件夹。我想站点根文件夹不算那些,因此找不到它。

感谢此帖:Django Static Files Development

答案 2 :(得分:0)

在django2中,默认情况下,您只需要为单个应用程序创建静态和模板文件夹,模板渲染和静态文件就为静态和模板文件夹寻找单个应用程序,即使在创建文件夹和复制文件后仍然无法正常工作的情况下,请尝试停止并再次运行服务器,它会解决问题:)