django静态文件未加载

SSR*_*das 3 django django-staticfiles

我有一个问题,我按照教程https://docs.djangoproject.com/en/1.5/intro/tutorial06/中的说明进行了所有操作,并且所有操作都运行良好,但是CSS,图像未显示其效果。作为django上的新手,需要建议。谢谢你的帮助。

我的css文件:-

li a {
    color: red;
}
body {
    background: white url("images/background.gif") no-repeat right bottom;
}
Run Code Online (Sandbox Code Playgroud)

url.py文件:-

from django.conf import settings
from django.conf.urls.static import static
from django.conf.urls import patterns,url
from polls import views
urlpatterns = patterns('',
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'),
    url(r'^(?P<pk>\d+)/results/$', views.ResultsView.as_view(), name='results'),
    url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'), 
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)

Index.html文件-

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static '/polls/style.css' %}"/>
{% if latest_poll_list %}
<ul>
{% for poll in latest_poll_list %}
    <li><a href="{% url 'polls:detail' poll.id %}">{{ poll.question }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

Settings.py文件:-

MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    '/polls/static/'
    )
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

ROOT_URLCONF = 'mysite.urls'

WSGI_APPLICATION = 'mysite.wsgi.application'

TEMPLATE_DIRS = (
    'C:/django poll project/mysite/templates',
    )

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'polls',
)
Run Code Online (Sandbox Code Playgroud)

在运行服务器上,获取-

[18 / Sep / 2014 17:40:51]“ GET / polls / HTTP / 1.1” 200311 [18 / Sep / 2014 18:25:39]“ GET / polls / HTTP / 1.1” 200311

Lee*_*Lee 7

静态文件的 URL 是“yourDomain/static/”

当你想访问你的“style.css”时,你应该使用“/static/style.css”而不是“/polls/style.css”

编辑:

更改 settings.py 的这一部分

STATICFILES_DIRS = (
    '/polls/static/'
    )
Run Code Online (Sandbox Code Playgroud)

STATICFILES_DIRS = (
    'C:/django poll project/mysite/static'
    )
Run Code Online (Sandbox Code Playgroud)

更好的是:

STATICFILES_DIRS = (
    os.path.join(SITE_ROOT, '..', 'static'),
)
Run Code Online (Sandbox Code Playgroud)

然后该文件夹被称为“静态”并且与“manage.py”处于同一级别。当您将 style.css 放在这个“静态”文件夹中时,您可以使用“/static/style.css”来调用它


Muj*_*que 6

更新了Django 2.2的答案-2019

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
Run Code Online (Sandbox Code Playgroud)

BASE_DIR已经在 settings.py

此外,当加载,这样做{% load static %}的,而不是{% load staticfiles %}


Md *_*lam 5

适用于 Django 版本 4 2022

如果有人的静态文件不起作用,请确保您的静态文件夹位于正确的位置

快捷方式:将静态文件夹保存在数据库所在的同一目录中。

-->ProjectName
  -->app1
  -->app2
  -->db.sqlite3
  -->static
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

并确保您已在 settings.py 中添加此行

STATIC_URL = 'static/'
STATICFILES_DIRS = (
BASE_DIR/'static',
)
Run Code Online (Sandbox Code Playgroud)