【问题标题】:django static files not workingdjango静态文件不起作用
【发布时间】:2012-08-16 01:13:58
【问题描述】:

由于某种原因,django 没有提供我的静态文件。

我已经查看了很多解决此问题的方法,但我仍然没有找到解决方案。

这是我的配置:

urls.py

urlpatterns = patterns('',
    (r'^$', index),
    (r'^ajax/$', ajax),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': path.join(path.dirname(__file__), 'static')}),
)

settings.py

STATIC_ROOT = '/home/aurora/Code/django/test/static/'
STATIC_URL = '/static/'
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

当我导航到http://localhost:8000/static/css/default.css
我收到此错误:'css/default.css' could not be found

当我导航到http://localhost:8000/static/
我收到此错误:Directory indexes are not allowed here.

看起来静态目录正在映射,但子目录没有。

【问题讨论】:

  • 请在此处查看我的答案:stackoverflow.com/questions/9168187/…。总而言之,您不会将静态文件存储在STATIC_ROOT 中。 Django 从不 在开发中使用这个目录。即使在生产环境中,从这个目录中提供服务的是您的网络服务器而不是 Django。
  • 立即工作。如果您希望我标记为答案,请发布为答案。

标签: python django


【解决方案1】:

开发中:

  • STATICFILES_DIRS 应包含所有静态文件所在的所有静态目录

  • STATIC_URL 应该是 /static/ 如果您的文件在本地计算机中,否则将基本 URL 放在这里例如“http://example.com/”

  • INSTALLED_APPS 应该包含'django.contrib.staticfiles'

在模板中,加载staticfiles模块:

{% load staticfiles %}
..
..
<img src='{% static "images/test.png" %}' alt='img' />

生产中:

  • 添加STATIC_ROOT,Django 使用它来收集来自STATICFILES_DIRS 的所有静态文件

  • 收集静态文件

python manage.py collectstatic [--noinput]
  • 添加urls.py的路径
from . import settings
    ..
    ..
urlpatterns = patterns('',
..
    url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root':settings.STATIC_ROOT)}),)`

更详细的文章如下:

http://blog.xjtian.com/post/52685286308/serving-static-files-in-django-more-complicated

http://agiliq.com/blog/2013/03/serving-static-files-in-django/

【讨论】:

  • 谢谢。这很好地总结了开发和生产的变化。就我而言,我输入的是 STATICFILES_DIR 而不是 STATICFILES_DIRS 并且一直在努力让它工作
【解决方案2】:

尝试运行python manage.py collectstatic 并查看收集静态文件的位置。

将此添加到您的urls.py 并在settings.py 中设置DEBUG=True

if settings.DEBUG:
    urlpatterns += patterns('',
             (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT, 'show_indexes':True}),
         )

    urlpatterns += patterns('',
            (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes':True}),
        )

【讨论】:

  • 0 个静态文件复制到“/home/aurora/Code/django/test/static/”。我在目录上做了一个 ls ,我可以看到那里的文件......
  • 'show_indexes':True 应该可以帮助您显示/static 上的索引。你在那里看到了什么?
  • 进入/static/时目录被列出,但无法访问目录中的文件
  • localhost:8000/admin/ 是否拥有所有 css 文件?
  • 尝试编辑你的 settings.py 到下面的静态部分并将你的 css 复制到 project_static 文件夹下,然后运行 ​​the collectstatic` 命令
【解决方案3】:

我认为您不需要 urls.py 中的静态路径,删除它应该可以工作。

目前是这样的

urlpatterns = patterns('',
    (r'^$', index),
    (r'^ajax/$', ajax),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': path.join(path.dirname(__file__), 'static')}),
)

只需删除 r'^static 行

urlpatterns = patterns('',
    (r'^$', index),
    (r'^ajax/$', ajax),
)

至少在 django 1.3 及更高版本中是这样的

【讨论】:

【解决方案4】:

你可以做这样的设置

  1. 在settings.py里面添加静态目录路径

     STATICFILES_DIRS = [
         BASE_DIR / "static"
     ]
    

    参考:https://docs.djangoproject.com/en/3.1/howto/static-files/

  2. 在urls.py中添加一行代码

     urlpatterns += staticfiles_urlpatterns()
    

【讨论】:

  • NameError: name 'staticfiles_urlpatterns' is not defined
【解决方案5】:
STATIC_URL = '/static/' 
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

【讨论】:

  • 你应该添加一些解释。纯代码答案可能会被删除。
【解决方案6】:

我正在使用以下设置:(2021 年 4 月)

  • macos 大确定
  • vscode
  • Anaconda 3(用于环境)

当我尝试使用 http://localhost:8000/static/test.txt 在 Django 中访问我的静态文件时,如果静态文件夹中存在 test.txt 文件。

  1. 然后在您的主项目文件夹中打开setting.py 文件
  2. 最后将此代码粘贴到settings.py中:
STATIC_URL = '/static/'

# Added Manually
STATICFILES_DIRS = [
    BASE_DIR / "static",
]

然后重启 VS Code。

【讨论】:

  • 避免在图片中发布您的代码,而是以文本格式发布!
  • 好的,先生,非常感谢您的建议。我会做的
  • 没有静态根怎么运行??
猜你喜欢
  • 2016-08-20
  • 1970-01-01
  • 2015-11-09
  • 2015-07-09
  • 1970-01-01
  • 2015-03-30
  • 2012-01-14
  • 2016-02-11
  • 2020-09-12
相关资源
最近更新 更多