【问题标题】:Implementing CSS in Django在 Django 中实现 CSS
【发布时间】:2022-02-09 20:09:29
【问题描述】:

我正在尝试为我的 python 网络应用程序实现一个简单的 CSS 文件。当我尝试加载应用程序时,我在命令提示符中收到一条错误消息:

"GET /static/css/default.css HTTP/1.1" 404 1658

当然,HTML 页面没有实现任何 CSS。我的项目结构是:

ProjectName
 MyApp
 MyTeachingApp
  static
   css
    default.css
 templates
  page.html

在我的settings.py 中,我得到了:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
STATIC_URL = '/static/'

在 html 中,我得到了头部内的链接标签,例如:

<link rel="stylesheet" href="{% static "css/default.css" %}" />

如何在我的网络应用中正确实现 CSS?我需要向url.py 添加一些内容吗?还是在settings.py 中使用STATIC_ROOTSTATICFILES_DIRS

我正在使用 Django 1.9。

我的urls.py 文件包含以下代码:

    from django.conf.urls import url, include
from django.contrib import admin
from django.views import *
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^caesarTemp/', include('TeachingTool.urls')),
] + static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)

这是MyApp 文件夹中的urls.py

我在 MyTeachingApp 文件夹中有一个额外的 urls.py 文件,其中包含:

    from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$', views.printAlphabet, name = 'print'),
]

我尝试将静态语句添加到这个 urls.py 文件中,但仍然没有工作。

【问题讨论】:

    标签: python html css django


    【解决方案1】:

    您需要将您的应用添加到INSTALLED_APPS 元组。另外,添加urlpatterns 以使用本地开发服务器提供静态文件,就像 mastazi 所说的:

    urlpatterns = [
        # ... the rest of your URLconf goes here ...
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    您的应用程序被命名为MyTeachingApp,看起来如此;您的 INSTALLED APPS 配置应如下所示:

    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'MyTeachingApp',
    ]
    

    【讨论】:

    • 我必须向 INSTALLED_APPS 添加什么?喜欢 django.contrib.MyApp?
    • 如果你的 python chdir 是你应用的根目录,那么只需添加'MyTeachingApp'
    • 非常感谢!终于成功了,我错过了将应用程序添加到 settings.py
    • @Silvestrini 是的,当然 Dmitri 绝对正确,我没有意识到 MyTeachingApp 不在您的 INTALLED_APPS 列表中,很抱歉错过了!
    【解决方案2】:

    如果您有与某个特定应用关联的静态文件,则结构为:

    Project
        MyApp
            static
                MyApp
                    css
                    js
    
                    etc...
    

    所以在 static 你应该有一个名为 app 的子文件夹。 原因在这里解释https://docs.djangoproject.com/en/1.9/howto/static-files/

    现在我们或许可以将静态文件直接放在 my_app/static/ 中(而不是创建另一个 my_app 子目录),但这实际上是个坏主意。 Django 将使用它找到的第一个名称匹配的静态文件,如果您在不同的应用程序中有一个同名的静态文件,Django 将无法区分它们。我们需要能够将 Django 指向正确的位置,而确保这一点的最简单方法是对它们进行命名空间。也就是说,将这些静态文件放在另一个以应用程序本身命名的目录中。

    编辑: 还要确保你已经配置了你的 urls.py:

    urlpatterns = [
        # ... the rest of your URLconf goes here ...
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    【讨论】:

    • 我尝试了你所说的将静态文件放在 MyApp 文件夹中并创建一个具有相同名称的子文件夹,并将静态语句添加到 urls.py 中,但它仍然无法检测到css 文件。还有其他想法吗?
    • 也许您可以尝试将文件放在 Project/static/ 中(即不在应用程序中),然后尝试查看它是否已加载...如果您可以分享您的网址,那就太好了.py,例如您是整个项目只有一个 urls.py,还是每个应用程序也有一个 urls.py?。
    • 我编辑了帖子,看看我添加的关于我拥有的两个 urls.py 文件的内容。我也尝试将静态文件夹放在项目文件夹中,但没有找到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 2020-08-14
    相关资源
    最近更新 更多