【问题标题】:Django doesn't load css fileDjango不加载css文件
【发布时间】:2020-07-06 15:05:14
【问题描述】:

我试图搜索很多关于这个问题的帖子,任何一个都不能解决我的问题,很遗憾,我在某些方面无法理解。这是帖子。

Django cannot find static files. Need a second pair of eyes, I'm going crazy

我想这是与我最相似的情况,有人对此给出了非常好的答案,但它无法解决我的问题:/

这是我的文件集

- beerlog  
 - beerlog
     - settings.py
     - ...
 - posting
     - urls.py
     - templates
         - posting
             - base.html
             - index.html
             - post.html
             - posting.html
     - static
         - posting
             - style.css
         - ...
 - static
     - registration
         - ...

settings.py


STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

/posting/templates/posting/base.html


<!DOCTYPE html>
{% load static %}
<html class="no-js">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>Beerlog</title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="/posting/sytle.css">
        {% block extra_head %}{% endblock %}
    </head>
    <body>
        <h2 class='headline'>Welcome to beerlog!</h2>
        <ul class="sidenav">
            {% if user.is_authenticated %}
            <li>Welcome back {{ user.get_username }}!</li>
            <li><a href="{% url 'logout' %}?next={{request.path}}">Logout</a></li>
            {% else %}
            <li><a href="{% url 'login' %}?next={{request.path}}">Login</a></li>
            {% endif %}
        </ul>
        {% block content %}
        {% endblock %}

/posting/urls.py

from django.urls import path
from django.conf import settings
from django.conf.urls.static import static

from . import views


app_name = 'posting'
urlpatterns = [
    path('', views.index, name='index'),
    path('<int:post_id>', views.post, name='post'),
    path('posting', views.posting, name='postingform'),
    path('base', views.base, name='base')
]

/beerlog/urls.py


from django.contrib import admin
from django.urls import path, include
from django.contrib.staticfiles.urls import static, staticfiles_urlpatterns

from . import settings

urlpatterns = [
    path('posting/', include('posting.urls')),
    path('admin/', admin.site.urls),
]

urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += [
    path('accounts/', include('django.contrib.auth.urls')),
]

我设置的静态文件和django官方文档一样的模板,模板工作得很好但是为什么css不起作用?请帮帮我:(绝望

【问题讨论】:

  • 尝试在你的设置中添加这个 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static") ]
  • 兄弟你是通过静态函数导入css文件的吗? &lt;link rel="stylesheet" href="/posting/sytle.css"&gt; ??还是只是链接??对 settings.py 和 {% static 'path_to_css' %} 使用上面的注释使用它代替 href="/posting/sytle.css" 并且你的 css 名称也是错误的
  • @NoahLc 我尝试这样做,但他们说我不能在 STATICFILES_DIRS 中包含 STATIC_ROOT。
  • 您在文件名sytle.css 而不是style.css 中有错字。
  • 那你为什么不点赞

标签: django django-templates django-staticfiles


【解决方案1】:

posting 文件夹添加到 STATICFILES_DIRS 作为附加(到 STATIC_ROOT)文件夹,用于从以下位置收集静态文件:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'posting/static'),
]

在 DEBUG=true 中,访问这些文件就足够了。在移动到 DEBUG=false 之前运行 collectstatic 并将来自 posting/static 的文件和文件夹复制到 STATIC_ROOT(您可以立即尝试)。

然后使用 static 标签从模板中引用您的静态文件:

{% import static %}
<link rel="stylesheet" href="{% static '/posting/style.css' %}">

如果仍然无法正常工作 - 从呈现的模板中获取 URL 并尝试手动打开它,然后检查响应状态。

还要确保您已添加提到的 url 模式 here 以使 Django 在 DEBUG=true 中提供静态文件。注意,Django 不会在 DEBUG=false 时提供静态文件。

【讨论】:

    猜你喜欢
    • 2020-09-26
    • 2019-01-16
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 2019-03-06
    • 2020-01-26
    相关资源
    最近更新 更多