背景:我使用 Django manage.py runserver 进行本地开发。我在已安装的应用程序中有 contrib.staticfiles,并且在模板中使用其 {% static %} 模板标记。
我试图实现的目标:对于开发,我想使用独立的服务器来提供静态文件,但使用 django 开发服务器来提供 Django 应用程序。这样我就可以在我的计算机上本地访问该页面http://127.0.0.1:8000 http://127.0.0.1:8000,但所有静态文件都将从另一台计算机或本地主机上的不同服务器提供服务,如 settings.STATIC_URL 变量所定义。
问题:当我使用开发服务器时,settings.STATIC_URL 变量以某种方式被覆盖。所以我所有的静态文件都是由本地 django 开发服务器提供的,而不是我在 settings.STATIC_URL 中定义的。
解决方案:请参阅下面丹尼尔的回答!
设置.py:
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
STATIC_URL = os.path.join('127.0.0.1:666', BASE_DIR, 'static/')
示例_模板.html:
{% load staticfiles %}
{% load bootstrap3 %}
{% bootstrap_css %}
{% bootstrap_javascript jquery=True%}
{% bootstrap_messages %}
{# Load MyApp CSS #}
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700subset=greek-ext,vietnamese,cyrillic-ext,latin-ext' rel='stylesheet' type='text/css'>
<link href="{% static 'css/my_app.main.css' %}" rel="stylesheet">
使用浏览器时的页面源:
<link href="FULL_PATH_TO_BASE_DIR_HERE/static/css/my_app.main.css" rel="stylesheet">
但预计会看到:
<link href="127.0.0.1:666/FULL_PATH_TO_BASE_DIR_HERE/static/css/my_app.main.css" rel="stylesheet">