我在Django项目中有以下结构。正如你所看到的,有一个名为“博客”的应用程序以及与项目本身同名的主应用程序。在
我遇到的问题是从主项目的static
目录提供静态文件。blog
应用程序有自己的static
目录,这些文件将得到正确的服务(当相关的URL路由被遍历时)。在
有人能告诉我我做错了什么吗?另外,在处理多个应用程序时,提供静态文件的最佳实践是什么?将所有样式和脚本转储到项目根目录中的一个公共static
目录是明智之举,还是将所有的东西从一个应用程序完全分开?在
设置.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, "..", "django_by_example_blog", "static")
STATIC_URL = '/static/'
网址.py
^{pr2}$基本.html
{% load staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<title>Home | Triangle</title>
<link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
<link href="{% static "css/font-awesome.min.css" %}" rel="stylesheet">
<link href="{% static "css/animate.min.css" %}" rel="stylesheet">
<link href="{% static "css/lightbox.css" %}" rel="stylesheet">
<link href="{% static "css/main.css" %}" rel="stylesheet">
<link href="{% static "css/responsive.css" %}" rel="stylesheet">
<!--[if lt IE 9]>
<script src="{% static "js/html5shiv.js" %}></script>
<script src="{% static "js/respond.min.js" %}"></script>
<![endif]-->
<link rel="shortcut icon" href="{% static "images/ico/favicon.ico" %}">
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="{% static "images/ico/apple-touch-icon-144-precomposed.png" %}">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="{% static "images/ico/apple-touch-icon-114-precomposed.png" %}">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="{% static "images/ico/apple-touch-icon-72-precomposed.png" %}">
<link rel="apple-touch-icon-precomposed" href="{% static "images/ico/apple-touch-icon-57-precomposed.png" %}">
</head><!--/head-->
<body>
STATIC_ROOT指定运行
collectstatic
命令时将所有静态文件转储到其中的文件夹您似乎已将应用程序的静态文件夹之一指定为静态根目录。在
最好提供另一个文件夹来保存所有静态文件。在
^{pr2}$当您运行
collectstatic
命令时,它将收集所有静态文件并将它们放入STATIC_ROOT
文件夹中。在不过,在运行
DEBUG=True
时,您不必担心这些。 Django将为所有静态内容提供服务(包括来自各个应用程序的内容),但在生产环境中,不建议这样做,web服务器的工作是提供静态内容。在编辑:
你还需要在你的基础上指定网址.py在
“将所有样式和脚本转储到公共静态目录”正是
collectstatic
命令所做的。您应该运行它,并配置您的服务器以从那里提供文件。在首先,您应该将静态根设置设置为指向该公共目录,而不是应用程序内部。在
相关问题 更多 >
编程相关推荐