我是django框架的新手。我创建了简单的欢迎页面,我想在我的项目中包含css文件。我无法在项目中应用css文件。我得到的错误就像" NetworkError:404 NOT 找到 - /static/css/hai.css"
这是我的项目结构
setting.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATIC_URL = '/static/'
TEMPLATE_DIRS=(
os.path.join(os.path.dirname(BASE_DIR),"static","templates"),
)
if DEBUG:
MEDIA_URL='/media/'
STATIC_ROOT=os.path.join(os.path.dirname(BASE_DIR),"static","static-only")
MEDIA_ROOT=os.path.join(os.path.dirname(BASE_DIR),"static","media")
STATICFILE_DIRS=(
os.path.join(os.path.dirname(BASE_DIR),"static","static"),
)
url.py
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
base.html文件
<link href="/static/css/bootstrap.min.css" rel="stylesheet">
我尝试关注链接,但我无法应用css https://www.youtube.com/watch?v=8t80DMAAps8
答案 0 :(得分:2)
Django在STATIC_ROOT
访问的STATIC_URL
中自动收集静态。把你的&#34;基地&#34;像项目包中的bootstrap一样的静态(项目包是一个带有 init .py)的目录simpleform > static > bootstrap > copy here all tree dirs from bootstrap package: css, fonts, js
。并将您的应用程序静态存储在signup > static > also create css, js dirs
。
因此,如果hai.css
是您在base.html
中使用的基本css之一,请将其simpleform > static > css > hai.css
。
<强> settings.py 强>
这就是你应该提供项目静态的方法:
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'simpleform/static'),
)
对于应用程序静态:
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
此外,您还设置了一个目录,其中django应存储收集的静态和上传的媒体(以及用于访问它们的网址)。例如,将其设置为src > static
和src > media
:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
<强> simpleform.urls 强>
if settings.DEBUG:
# static files (images, css, javascript, etc.)
urlpatterns += patterns(
'',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT}),
url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT}),
)
<强>模板强>
{% load staticfiles %}
<link href="{% static 'bootstrap/css/bootstrap.min.css' %}" rel="stylesheet" media="screen">
<link href="{% static 'css/hai.css' %}" rel="stylesheet" media="screen">
答案 1 :(得分:2)
我认为这只是一个拼写错误。你需要在S
之后放一个STATICFILE
因此看起来应该是这样的:
STATICFILES_DIRS=(
os.path.join(os.path.dirname(BASE_DIR),"static","static"),
)
希望这样做。
答案 2 :(得分:0)
尝试做一个像这样的简单文件
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
OUTER_DIR = os.path.dirname(BASE_DIR)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
STATIC_URL = '/static/'
TEMPLATE_DIRS=(
os.path.join(OUTER_DIR, "static", "templates"),
)
MEDIA_URL='/media/'
STATIC_ROOT = os.path.join(OUTER_DIR, "static", "static-only")
MEDIA_ROOT = os.path.join(OUTER_DIR, "static", "media")
STATICFILE_DIRS=(
os.path.join(OUTER_DIR, "static"),
)
然后,在您的代码中使用{% static %}
模板标记。
{% load staticfiles %}
<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet" />
用
测试一下DEBUG = True
TEMPLATE_DEBUG = DEBUG
如果您关闭DEBUG
,则需要添加
if not settings.DEBUG:
urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
当你现在拥有它时,它不会被打开。
templates
目录不应该在static
文件夹中。通常,templates
和static
所需的特定文件应该在您的Django项目中,而不是单独的。