【问题标题】:Not able to load static files in django template无法在 django 模板中加载静态文件
【发布时间】:2020-10-02 01:52:24
【问题描述】:

首先,我知道在 StackOverflow 中还有很多这样的问题。但它们似乎都不起作用。所以这里...

我正在通过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' %}">

...
...

我完成了教程所做的一切。我不确定为什么这不起作用。可能是因为教程有点,而我使用的是django 3.0.4?我可以在两个版本之间做出的唯一区别是使用{% load static %} 而不是{% load staticfiles %}

我做错了什么?

【问题讨论】:

  • Django 1.11.6 -> 3.0.4 是巨大的尝试阅读文档,这是您可以尝试正确理解的最佳方法:docs.djangoproject.com/en/3.0/howto/static-files
  • @Shashank,我扫描了文档以查找此问题的答案。似乎没有任何效果。我现在该怎么办?

标签: python css django django-staticfiles django-3.0


【解决方案1】:

在开发模式下也添加一个 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)

【讨论】:

  • 这里的static_cdn到底是什么?
  • 这是一个示例文件夹名称,您可以在那里选择任何名称。
  • 这对我不起作用。我在STATIC_ROOT 中尝试了staticassets。两者都不起作用。另外,我检查了文档。我找到了from django.conf.urls.static import static。但即使这样也行不通。
  • 我根据视频教程添加了文件夹。所以我想我在正确的文件夹中。你想看看视频看看我哪里出错了吗?
  • 你的模板 DIR 设置是什么
猜你喜欢
  • 1970-01-01
  • 2016-03-02
  • 2015-07-31
  • 2020-11-12
  • 2014-09-03
  • 1970-01-01
  • 2014-07-12
相关资源
最近更新 更多