Django Add Scond Static Files URL

问题描述 投票:0回答:1

我正在使用带有Bootstrap模板的Django,该模板需要Jquery。但是我在处理js文件时遇到了麻烦。

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

我正在使用Bootstrap 4模板。

我的项目模板需要一个js文件(没有该js文件,模板将无法正常工作),但是此js文件未使用有效的网址;它正在调用我的所有svg文件,但带有无效的URL


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

Project Static files


这是我的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文件,并且它使用的是无效网址。

这是我有问题的js文件:

“ {%静态'app-assets / vendors / js / vendors.min.js'%}”]

这是我的错误:

Error with vendors.min.js

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

[如果您看,问题完全出在这个“ vendors.min.js”文件上。 Django首先正确地加载了所有内容,但是在加载了这个js文件之后,它使用无效的URL调用了所有svg文件;因此浏览器会抛出404 not found错误。


通常,一切都是正确的:

True Address

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

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

如何解决此问题?

[我认为,如果我可以直接添加以'/ app-assets /'开头的静态url路径,则所有方法都可以使用。但是暂时找不到,如何添加第二个静态URL路径。

django url django-templates django-urls filepath
1个回答
0
投票

已解决。

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

这是新设置:

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”链接现在有效。

© www.soinside.com 2019 - 2024. All rights reserved.