【问题标题】:Loading css and javascript files in more then one django templates without having to to re load css and js在多个 django 模板中加载 css 和 javascript 文件,而无需重新加载 css 和 js
【发布时间】:2015-05-21 19:59:23
【问题描述】:

如果已经问过这个问题,我深表歉意,但我已经尝试了一段时间,无法弄清楚为什么在我的 django 应用程序中更改路由时,整个应用程序中使用的所有 css 和 js 文件(如 angular 和 jQuery)都需要是要重新加载。

路径

mysite
   settings,py
   urls.py
   views.py
static
   media
   static_dirs
   static_root
templates
   home.html
   partials
       dealDetals.html

settings.py

TEMPLATE_DIRS = (
  os.path.join(BASE_DIR, 'templates'),
  #BASE_DIR + "/templates/"
)

STATIC_ROOT = os.path.join(BASE_DIR, 'static', 'static_root')

STATICFILES_DIRS = (

  os.path.join(BASE_DIR, 'static', 'static_dirs'),

)

MEDIA_ROOT = os.path.join(BASE_DIR, 'static', 'media')

MEDIA_URL = "/media/"

STATIC_URL = '/static/'

urls.py

 urlpatterns = patterns('',
    url(r'^$', 'mySite.views.home', name='home'),
    url(r'^dealsDetails/', 'mySite.views.dealsDetails', name='dealsDetails'),

views.py

def home(request):
  template = "home.html"
  return render(request, template, context)


def dealsDetails(request):
    context = {}
    template = "partials/dealDetails.html"
    return render(request, template, context)

home.html

{% load staticfiles %}

// this loads correctly and can be seen in the network tab in chrome dev tools
<script src="{% static 'js/bootstrap.min.js' %}"></script>

<a href="/dealsDetails">deal details</a>

一旦路由转到http://127.0.0.1:8000/dealsDetails/,所有静态文件都不再加载到 chrome 开发工具的网络选项卡中。

问题是如何在不同的模板之间共享 css 和 js 文件?

我可以在一个模板中加载 js 和 css,但不能超过一个。

我是否也需要将脚本和链接标签添加到 dealDetails.html 中?我希望不会:(

【问题讨论】:

    标签: django


    【解决方案1】:

    你还必须在 dealDetails.html 中包含 js 和 css 文件。

    为避免重复相同的代码,您可以创建一个包含 css 和 js 文件的 base.html 模板,然后在两个模板中扩展该基本模板。

    看看documentation

    【讨论】:

      猜你喜欢
      • 2014-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      相关资源
      最近更新 更多