【问题标题】:Django Add Scond Static Files URLDjango 添加第二个静态文件 URL
【发布时间】:2020-06-23 16:12:55
【问题描述】:

我将 Django 与需要 Jquery 的 Bootstrap 模板一起使用。但是我在使用 js 文件时遇到了问题。

我创建了 static 目录和 static_cdn 目录。

我正在使用 Bootstrap 4 模板。

我的项目模板需要一个 js 文件(没有这个 js 文件模板不能正常工作)但是这个 js 文件没有使用一个有效的 url;它正在调用我所有的 svg 文件,但 URL 无效


这是我的项目静态文件夹:


这是我的 urls.py 网址:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^panel/$', panelView, name='panel'),
    url(r'^pageOne/$', pageOne, name='pageOne'),
]
if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这是我的 settings.py :

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(os.path.dirname(BASE_DIR), "static"),
    # '/var/www/static/',
]
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")
MEDIA_URL = '/evrak/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "evrak")

这是我的html页面:

    <!-- BEGIN: Vendor JS-->
    <script src="{% static 'app-assets/vendors/js/vendors.min.js' %}"></script>
    <script src="{% static 'app-assets/fonts/LivIconsEvo/js/LivIconsEvo.tools.js' %}"></script>
    <script src="{% static 'app-assets/fonts/LivIconsEvo/js/LivIconsEvo.defaults.js' %}"></script>
    <script src="{% static 'app-assets/fonts/LivIconsEvo/js/LivIconsEvo.min.js' %}"></script>
    {% block vendorJS %}
    {% endblock vendorJS %}
    <!-- END Vendor JS-->

    <!-- BEGIN: Page Vendor JS-->
    {% block pageVendorJS %}
    {% endblock pageVendorJS %}
    <!-- END: Page Vendor JS-->

现在, Django 能够加载 static 目录中的所有内容。而且一切正常。

但是,一个 js 文件正在调用我所有的 svg 文件,并且它使用了一个无效的 url。

这是我有问题的 js 文件:

"{% static 'app-assets/vendors/js/vendors.min.js' %}"

这是我的错误:

您可以看到“initiator”字段,显示谁在调用文件。 因此,所有“red”文件的发起者都是“vendor.min.js”。

如果你看的话,问题就在于这个“vendors.min.js”文件。 Django首先正确加载了所有内容,但是在加载了这个js文件之后,它调用了所有带有无效url的svg文件;所以浏览器会抛出 404 not found 错误。


通常一切都是正确的:

Django 正在正确加载所有内容,但是 vendors.min.js 以错误的方式调用所有文件,因此 Django 找不到它们。

我找不到如何更改此 js 文件以调用有效地址,或将 'app-assets' url 目录添加到 Django。

我该如何解决这个问题?

我认为,如果我可以直接添加以“/app-assets/”开头的静态 url 路径,那么一切都会奏效。但目前找不到,如何添加第二个静态 url 路径。

【问题讨论】:

    标签: django url django-templates django-urls filepath


    【解决方案1】:

    解决了。

    添加了一个使用目录的新路径,并解决了。

    这是新设置:

    STATIC_URL = '/static/'
    STATIC_URL2 = '/app-assets/'
    STATICFILES_DIRS = [
        os.path.join(os.path.dirname(BASE_DIR), "static"),
        # '/var/www/static/',
    ]
    STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), "static_cdn")
    STATIC_ROOT2 = os.path.join(os.path.dirname(BASE_DIR), "static_cdn/app-assets")
    
    MEDIA_URL = '/evrak/'
    MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "evrak")
    

    这是新的 urls.py :

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^panel/$', panelView, name='panel'),
        url(r'^pageOne/$', pageOne, name='pageOne'),
    ]
    if settings.DEBUG:
        urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
        urlpatterns += static(settings.STATIC_URL2, document_root=settings.STATIC_ROOT2)
        urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    

    现在,一切正常。 两个都 'http://127.0.0.1:8000/app-assets/fonts/LivIconsEvo/svg/share.svg' 和 'http://127.0.0.1:8000/static/app-assets/fonts/LivIconsEvo/svg/share.svg' 链接现在有效。

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 2021-01-12
      • 2011-04-25
      • 2019-03-05
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      相关资源
      最近更新 更多