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

时间:2018-03-28 10:21:37

标签: python django settings

当我在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)

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

静态用于在本地服务器模式下定向静态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。