我正在通过此tutorial学习django。该教程有点陈旧,但是大多数代码是相同的。我曾尝试像本教程一样向项目中添加一些CSS
文件,但由于某种原因,它对我不起作用。这是我的文件结构...
src
├── assets
│ └── css
│ ├── base_styles.css
│ └── index_styles.css
├── core
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ ├── settings.cpython-37.pyc
│ │ ├── urls.cpython-37.pyc
│ │ ├── views.cpython-37.pyc
│ │ └── wsgi.cpython-37.pyc
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ ├── views.py
│ └── wsgi.py
├── db.sqlite3
├── manage.py
├── test_app
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ ├── admin.cpython-37.pyc
│ │ ├── models.cpython-37.pyc
│ │ ├── urls.cpython-37.pyc
│ │ └── views.cpython-37.pyc
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ ├── __init__.py
│ │ └── __pycache__
│ │ └── __init__.cpython-37.pyc
│ ├── models.py
│ ├── templates
│ │ └── test_app
│ │ └── test_app_home.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
└── templates
├── aboutpage.html
├── base.html
└── homepage.html
请注意,src
是根文件夹。 core
是项目的名称,test_app
是应用程序的名称
全局模板位于src/templates/
下。 src/assets/css/
包含用于全局模板的css文件。
这是我的settings.py
代码
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
...
...
STATIC_URL = '/static/'
STAITCFILES_DIRS = (
os.path.join(BASE_DIR, "assets"),
)
这是我的core/urls.py
文件
from django.contrib import admin
from django.urls import path, include
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('test_app/', include('test_app.urls')),
path('about', views.aboutpage),
path('', views.homepage),
]
urlpatterns += staticfiles_urlpatterns()
这是我的base.html
文件。
{% load static %}
...
...
<link rel="stylesheet" href="{% static 'css/base_styles.css' %}">
...
...
我做了本教程所做的一切。我不确定为什么这行不通。可能是因为该教程有点 old 而我正在使用django 3.0.4
吗?我可以在两个版本之间做的唯一区别是使用{% load static %}
而不是{% load staticfiles %}
。
我在做什么错了?
答案 0 :(得分:0)
在开发模式下,还添加一个static_root:
STATIC_ROOT = os.path.join(BASE_DIR, 'static_cdn')
然后收集您的文件
python manage.py collectstatic
您的浏览器也会起作用,因此请尝试运行隐身或隐身模式。
在官方文档中,它们提供如下的静态文件
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)