我似乎无法从我的模板中加载我的静态文件。我遵循了官方文档但我必须遗漏一些东西。
我的目录布局(由Django生成,大多数文件被省略):
myproject
myproject
settings.py
urls.py
static
css
bootstrap.css
main.css
templates
base.html
myapp1
myapp2
...
manage.py
我的settings.py
:
STATIC_URL = 'static/'
我正在引用我的样式表(来自我的模板):
{% load staticfiles %}
<link rel="stylesheet" href="{% static "css/bootstrap.css" %}" type="text/css">
<link rel="stylesheet" href="{% static "css/style.css" %}" type="text/css">
一旦呈现(以HTML格式),它会给出这个:
<link rel="stylesheet" href="static/css/bootstrap.css" type="text/css">
<link rel="stylesheet" href="static/css/style.css" type="text/css">
然而,这些链接实际上并不导致任何地方(当我访问它们时,我从Django得到404错误)。我觉得我可以通过添加urls.py
中的内容来解决这个问题,但我认为Django在运行服务器时会自动执行此操作?我错过了什么?
答案 0 :(得分:23)
您是否在settings.py
?
我猜您已安装的应用中有'django.contrib.staticfiles',
。
如果你还没有定义静态文件目录,你可以这样做:
import os.path
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
STATICFILES_DIRS = (
os.path.join(PROJECT_ROOT, 'static'),
)
答案 1 :(得分:3)
这是django for windows中静态/媒体/模板访问的工作解决方案,
settings.py
import os.path
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join('static'),
)
答案 2 :(得分:3)
我的问题通过添加&#34; STATICFILES_DIRS&#34;在settings.py文件中
STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join('static'), )
答案 3 :(得分:1)
我认为当您运行服务器时,Django会自动执行此操作吗?
你为什么这么认为?如果您已经按照官方文档进行操作,那么您将无法找到它。阅读您需要做的事情才能在开发中为他们提供服务here。
还有另一个问题。您的STATIC_URL
是相对链接,因此浏览器将添加到现有网页网址中。因此,如果您在页面/foo
上,'static/css/style.css'
评估为/foo/static/css/style.css'
。
确保它以/
开头 - 即/static/
- 或者是完整的网址,即http://myserver.com/static/
。
答案 4 :(得分:1)
检查STATICFILES_FINDERS
settings.py
https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_FINDERS
默认值STATICFILES_FINDERS
足够好,但您有两个选择:
您需要在应用中包含静态文件并在INSTALLED_APPS
或者如果期望行为属于STATICFILES_DIRS
django.contrib.staticfiles.finders.FileSystemFinder
答案 5 :(得分:0)
我也遇到过这个问题。我通过像这样修改href解决了这个问题:
<html>
<link rel="stylesheet" href="{{STATIC_URL}}css/bootstrap.css" type="text/css">
<link rel="stylesheet" href="{{STATIC_URL}}css/style.css" type="text/css">
</html>
答案 6 :(得分:0)
确保在正确的位置设置了静态文件夹,也就是说,如果它位于app文件夹中,则可以从此有用的资源中获得进一步的说明1。
答案 7 :(得分:-3)
我的解决方案是DEBUG = True
设置。