Django 和 Bootstrap:脱机重新加载页面问题 (netdna.bootstrapcdn.com)

Django and Bootstrap: offline reload page issue (netdna.bootstrapcdn.com)

我有一个 Django 项目有效。我在 base_html:

中使用了 "bootstrapped"
{% load bootstrap3 %}
{% bootstrap_css %}
{% bootstrap_javascript %}
{# Display django.contrib.messages as Bootstrap alerts #}
{% bootstrap_messages %} 

settings.py:

INSTALLED_APPS = (
    'bootstrap_toolkit',
    'bootstrap3',
    'django_admin_bootstrapped.bootstrap3',
    'django_admin_bootstrapped',             
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'jquery',
    'jquery_ui',
    'homepage',
    'simpleapp',
)

完美,如果我使用我的 buttons&co 在页面之间浏览。它似乎是自举的,一切正常!

但是...

我注意到,如果我的电脑处于离线状态,(仅)当我 重新加载 页面(或者我在某些 js parent.window.location.reload 中使用时( true);), 它似乎 不是 自举的!此外,我注意到当我在线并重新加载页面时,浏览器会搜索 netdna.bootstrapcdn.com... 但这不是我的目标:我必须创建一个项目离线

如何解决重新加载问题?

如果您的浏览器没有启用缓存,它不会存储从 CDN 下载的 CSS 和 JS。为避免这种情况,

  1. 在浏览器中启用缓存
  2. 下载缩小的 bootstrap css 和 js 并将它们放在项目的静态目录中。然后link给他们点赞<script src="{% static "bootstrap.min.js" %}"></script>。如果你走这条路,别忘了发布你的静态文件。

django-bootstrap3 的默认设置指向 CDN 作为 documented:

# Default settings
BOOTSTRAP3 = {

    # The URL to the jQuery JavaScript file
    'jquery_url': '//code.jquery.com/jquery.min.js',

    # The Bootstrap base URL
    'base_url': '//netdna.bootstrapcdn.com/bootstrap/3.3.1/',
    ...

您应该将相关文件存储在您的 static 目录中,并设置 bootstrap3jquery_urlbase_url 设置。例如:

BOOTSTRAP3 = {

    # The URL to the jQuery JavaScript file
    'jquery_url': '/static/js/jquery.min.js',

    # The Bootstrap base URL
    'base_url': '/static/css/',

    # The complete URL to the Bootstrap CSS file (None means derive it from base_url)
    'css_url': '/static/css/bootstrap.min.css',

    # The complete URL to the Bootstrap CSS file (None means no theme)
    'theme_url': '/static/css/bootstrap.theme.min.css',

    # The complete URL to the Bootstrap JavaScript file (None means derive it from base_url)
    'javascript_url': '/static/js/bootstrap.min.js',

另一种方法是将 cssjs 位置硬编码到您的模板中,例如:

<link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet" type="text/css"/>
<link href="{% static 'css/bootstrap.theme.min.css' %}" rel="stylesheet" type="text/css"/>
<script src="{% static 'js/bootstrap.min.js' %}"></script>