简体   繁体   English

Django 模板未选择 static 文件

[英]Django templates not picking static files

Following is the my static folder structure:以下是我的 static 文件夹结构:

ProjectABC
    - App1
    - App2
    - App3
    - ProjectABC
    - resources
        - static
            - imgs
            - css
        - templates

This is how the project structure looks like.这就是项目结构的样子。

This is how the static configuration in settings.py looks like:这是 settings.py 中 static 配置的样子:

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

This is how the base.html looks like:这就是 base.html 的样子:

<!doctype html>
{% load static %}
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, maximum-scale=1, initial- 
         scale=1, user-scalable=0">
        <meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
        <link rel="stylesheet" href="https://fonts.googleapis.com/css? 
        family=Open+Sans:400,600,800">
        <title>{{SITE_NAME}}</title>
        <link rel='shortcut icon' href= "{% static 'img/favicon.png' %}"/>
        <link href="{{STATIC_URL}}css/application.css" media="screen" rel="stylesheet" 
        type="text/css" />
        <link href="{{STATIC_URL}}css/style.css" media="screen" rel="stylesheet" 
        type="text/css" />

        <script src="{{STATIC_URL}}js/application.js" type="text/javascript"></script>
        {% block extracss %}
        {% endblock %}
   </head>
   <body>
       <div class="container">
           <h1>Hello</h1>
       </div>
   </body>
</html>

All the static files are being loaded as seen in terminal, but in browser its just loading bare html without any css or img:如终端所示,所有 static 文件都在加载,但在浏览器中,它只是加载裸 html 而没有任何 css 或 img: 在此处输入图像描述

Please lemme know if i am missing something.请让我知道我是否遗漏了什么。

Thnk You!谢谢!

<link href="{%static 'css/style.css' %}" media="screen" rel="stylesheet" 
        type="text/css" />

add settings.py添加设置.py

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

Project App Url项目应用程序 Url

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    
    
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Static directory must be under the app itself. Static 目录必须在应用程序本身下。 Create a 'static' directory directly to your app and for better practice, you can also create another directory to the static directory with your app name (static/[app_name]).直接为您的应用创建一个“静态”目录,为了更好地实践,您还可以使用您的应用名称 (static/[app_name]) 在 static 目录中创建另一个目录。

Also, {% load static %} must be above doctype in your base.html此外,{% load static %} 必须高于基础中的 doctype。html

change the static config in your settings.py to this:settings.py中的 static 配置更改为:

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

then run python manage.py collectstatic然后运行python manage.py collectstatic

and when you call the static file do it like this {% static 'css/style.css' %}当你调用 static 文件时,这样做{% static 'css/style.css' %}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM