Django 不提供静态文件
Django is not serving staticfiles
我想使用 django staticfiles,但不幸的是我无法在本地为图像提供服务。
这是我目前所做的:
settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'content.apps.ContentConfig',
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
当我执行 print(os.path.join(BASE_DIR, 'staticfiles')) 时,我看到了正确的本地路径。
urls.py:
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.urls import path
import content.views
urlpatterns = [
path('admin/', admin.site.urls),
path('', content.views.index, name='index'),
path('/about', content.views.about, name='about'),
]
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
模板:
{% load static %}
...
{% static "css/master.css" %}
解析为
/static/css/master.css
[编辑]
URL 模式看起来像这样
Using the URLconf defined in website.urls, Django tried these URL
patterns, in this order:
admin/
[name='index']
/about [name='about']
^static/(?P<path>.*)$
直接打开一个文件,结果是一个 404-django-page。
之后,我运行 ./manage.py collectstatic 成功。
我正在使用 Django Dev 服务器,例如./manage.py 运行服务器...
我可能遗漏了什么,只是需要多一双眼睛。谢谢。
通过移除
解决了它
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
并将其替换为
STATICFILES_DIRS = (os.path.join(BASE_DIR, "staticfiles"),)
我想使用 django staticfiles,但不幸的是我无法在本地为图像提供服务。
这是我目前所做的:
settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'content.apps.ContentConfig',
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
当我执行 print(os.path.join(BASE_DIR, 'staticfiles')) 时,我看到了正确的本地路径。
urls.py:
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.urls import path
import content.views
urlpatterns = [
path('admin/', admin.site.urls),
path('', content.views.index, name='index'),
path('/about', content.views.about, name='about'),
]
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
模板:
{% load static %}
...
{% static "css/master.css" %}
解析为
/static/css/master.css
[编辑] URL 模式看起来像这样
Using the URLconf defined in website.urls, Django tried these URL
patterns, in this order:
admin/
[name='index']
/about [name='about']
^static/(?P<path>.*)$
直接打开一个文件,结果是一个 404-django-page。
之后,我运行 ./manage.py collectstatic 成功。
我正在使用 Django Dev 服务器,例如./manage.py 运行服务器...
我可能遗漏了什么,只是需要多一双眼睛。谢谢。
通过移除
解决了它STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
并将其替换为
STATICFILES_DIRS = (os.path.join(BASE_DIR, "staticfiles"),)