Django看不到静态文件

时间:2019-03-31 14:28:16

标签: python django

所以,事实是django根本无法识别静态文件。不管我尝试了什么,都行不通。我尝试将全局搜索方式更改为css文件的直接url,但这似乎都不起作用。

我的项目的结构如下:

structure

这是我的代码:

DEBUG = True
INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
]
    STATIC_URL = '/static/'
    STATIC_DIRS = [os.path.join(BASE_DIR, "static")]
    STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")
    from django.contrib import admin
    from django.urls import path
    from something.views import *
    from django.conf import settings
    from django.conf.urls.static import static
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', home),
        ]
    if settings.DEBUG:
        urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
    {% load static from staticfiles %}
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <title>Monkeys</title>
            <link rel="stylesheet" type="text/css" href="{% static 'css/file.css' %}"/>
        </head>

可以在互联网上的任何主题中找到答案,希望您能提供帮助。

2 个答案:

答案 0 :(得分:1)

Go some steps back and set up static files and make sure it follows exactly django docs

Only about static files

This project has similar structure as yours

运行collectstatic时,默认STATICFILES_FINDERS值django.contrib.staticfiles.finders.FileSystemFinder将从您在STATICFILES_DIRS中具有的任何路径收集静态文件。

另一个默认的STATICFILES_FINDERS值django.contrib.staticfiles.finders.AppDirectoriesFinder将在INSTALLED_APPS中任何应用程序的/ static /文件夹中查找。

找到的所有静态文件将放置在指定的STATIC_ROOT目录中。

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")

您还可以使用python manage.py findstatic来查看collectstatic将查找的目录。

manage.py findstatic

答案 1 :(得分:1)

当前您输入的是错字- STATIC_DIRS ,而不是 STATICFILES_DIRS ,因此当前完全没有配置collectstatic。

修复它,然后再次运行collectstatic