【问题标题】:js files are not loading in django templatejs 文件未在 django 模板中加载
【发布时间】:2016-09-28 18:32:02
【问题描述】:

我的 django 项目有点问题。我的静态文件正在加载(img 和 css),而 js 文件没有。我在我的应用程序中创建了一个静态文件夹,其结构如下static/js/my_app/,其中包含我的 js 文件。

这是我使用 js 脚本的模板部分:

<!-- Scripts -->
<script src="{% static 'js/landing/jquery.min.js' %}"></script>
<script src="{% static 'js/landing/jquery.scrolly.min.js' %}"></script>
<script src="{% static 'js/landing/jquery.dropotron.min.js' %}"></script>
<script src="{% static 'js/landing/jquery.scrollex.min.js' %}"></script>
<script src="{% static 'js/landing/util.js' %}"></script>
<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
<script src="{% static 'js/landing/main.js' %}"></script>

这是我的 settings.py 文件中处理静态文件的部分:

STATIC_URL = '/static/'

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

谢谢

【问题讨论】:

  • 您已将文件放入static/js/my_app,但随后正尝试直接通过js/ 访问它们。您需要将所有static 调用更改为以js/my_app 开头。

标签: javascript django django-templates


【解决方案1】:

通常标准建议是 app_name/static/app_name/js/file.js

然后在模板中,您只需使用:{% static 'app_name/js/file_name.js' %},前提是静态的其他所有设置都正确。

在您的配置中,您使用的是 static/js/app_name 而不是 static/app_name/js。

【讨论】:

  • 您好 BobbyC,感谢您的回答,我按照您的指示进行了所有更改,但我的 js 仍未加载!我的静态文件夹现在是 my_app/static/my_app/js/file.js 我的电话是
  • 那么,“登陆”你的应用名称了吗?如果是,那么您是否在 "landing/static/landing/js/jquery.min.js" 中创建了文件/文件夹?是设置中 INSTALLED_APPS 中的应用名称。你说你的css被捡起来了。你能显示你对 css 文件的静态调用以及你把 css 文件放在什么路径吗?
  • 是的,这是我对 css 的静态调用:
【解决方案2】:

如果您遵循此步骤,则意味着您可以直接调用您的 js 或 css 文件 /static/css/a.css ,在模板中,确保 收集静态方法

import os
def root(x):
    return os.path.join(os.path.abspath(os.path.dirname(__file__)), '..',x)
MEDIA_ROOT = root('media')
MEDIA_URL = '/media/'
STATIC_ROOT = root('staticstorage')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    root('static'),
)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'dajaxice.finders.DajaxiceFinder',
)
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
    'django.template.loaders.eggs.Loader',

)
TEMPLATE_DIRS = (
    root('templates')
)
TEMPLATE_CONTEXT_PROCESSORS = (

    "--------------------------------------"
    'django.core.context_processors.media',
    'django.core.context_processors.static',
)

url.py

from django.conf.urls import patterns, include, url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf import settings
from django.conf.urls.static import static
admin.autodiscover()

urlpatterns = patterns('',
)

urlpatterns += patterns('',
    url(r'^static/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.STATIC_ROOT, 'show_indexes': False}),
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve',{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),

) 

urlpatterns += staticfiles_urlpatterns()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2015-09-21
    • 2012-09-03
    相关资源
    最近更新 更多