出于某种原因,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.
看起来静态目录已被映射出来,但子目录不是。
答案 0 :(得分:10)
在开发中:
STATICFILES_DIRS应该包含所有静态文件所在的静态目录
如果您的文件位于本地计算机中,则STATIC_URL应为“/ static /”,否则请将基本网址放在此处,例如“http://example.com/”
INSTALLED_APPS应包含'django.contrib.staticfiles'
在模板中,加载staticfiles模块:
{% load staticfiles %}
..
..
<img src='{% static "images/test.png" %}' alt='img' />
生产中:
添加django使用的“STATIC_ROOT”将所有静态文件从“STATICFILES_DIRS”收集到它
收集静态文件
$ python manage.py collectstatic
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/
答案 1 :(得分:5)
我认为你在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'^静态行
urlpatterns = patterns('',
(r'^$', index),
(r'^ajax/$', ajax),
)
至少这是在django 1.3及以上版本中完成的方式
答案 2 :(得分:5)
尝试运行python manage.py collectstatic
并查看静态文件的收集位置。
将此添加到您的urls.py
并在DEBUG=True
settings.py
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}),
)
答案 3 :(得分:0)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
答案 4 :(得分:0)
您可以进行类似的设置
在settings.py内部添加静态目录路径
STATICFILES_DIRS = [
BASE_DIR / "static"
]
参考:https://docs.djangoproject.com/en/3.1/howto/static-files/
在urls.py中添加一行代码
urlpatterns += staticfiles_urlpatterns()
答案 5 :(得分:0)
我正在使用以下设置:(2021 年 4 月)
当我尝试使用 http://localhost:8000/static/test.txt
访问 Django 中的静态文件时,如果静态文件夹中存在 test.txt 文件。
setting.py
文件,然后settings.py
中:STATIC_URL = '/static/'
# Added Manually
STATICFILES_DIRS = [
BASE_DIR / "static",
]
然后重新启动 VS Code。