urlpatterns = [...] + static(settings.STATIC_URL)获取转义符号

问题描述 投票:4回答:2

当我在urls.py中添加STATIC_URL时:

urlpatterns = [...]+static(settings.STATIC_URL)

但是我在网址上得到了^static\/(?P<path>.*)$

不应该是^static/(?P<path>.*)$?像^media/(?P<path>.*)$

enter image description here


settings.py

STATIC_URL = '/static/'

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

如何解决这个问题?还是有另一种方法来取代

+static(settings.STATIC_URL)

如果有,请提供给我测试,谢谢。

python django settings
2个回答
0
投票

有一种方法可以避免这个问题。在urls.py

from django.conf.urls.static import serve

if settings.DEBUG:
    urlpatterns += [
        url(r'^static/(?P<path>.*)$', serve, {
            'document_root': settings.STATIC_ROOT
        })
    ] 

结果将是这样的:

^media/(?P<path>.*)$
^static/(?P<path>.*)$  # this is as the same with the media

0
投票

Static用于在本地服务器模式下引导静态URL。不幸的是static(settings.STATIC_URL)似乎有点破碎。

这似乎适用于当前的django(2.2):

from django.conf.urls.static import serve

urlpatterns += [
    path(settings.STATIC_URL[1:], serve, {'document_root': settings.STATIC_ROOT })
]

运行./manage.py collectstatic后,本地服务器将正确提供所有静态文件。包括django_debug。

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