我的Django中的urls.py文件存在问题,它允许我在管理界面上的任何地方访问,无论在何处加载图像。如果有人可以看看它,请提前感谢!
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
urlpatterns = patterns('',
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
(r'^admin/', include(admin.site.urls)),
url(r'^admin/files/(?P<filepath>.*)$', 'my.app.admin.serv_backup_files', name='admin-file-serv'),
(r'^(?P<restaurant_slug>[^(admin)][a-zA-B-_0-9]+)$', TemplateView.as_view(template_name=os.path.join(settings.G_DOC_ROOT, 'index.html'))),
(r'^(?P<path>[^(admin)].*)$', 'django.views.static.serve', {'document_root': settings.G_DOC_ROOT}),
)
问题在于,使用此配置,我在runserver的控制台上看到了诸如
之类的内容“GET /img/field_bg.gif HTTP / 1.1”404
对于所有应该静态提供的图像。
我可以从最后一个模式中删除[^(admin)]
,并且该网站将得到很好的服务,但它会尝试将管理界面重新路由到静态文件。
提前感谢您帮我组合静态文件,子域无模板查看和管理员正常访问。
答案 0 :(得分:3)
我不太了解python正则表达式,但在我曾经使用的任何其他风格中,[^(admin)]
将匹配单个字符,除了'(< / strong>'或' a '或' d '或' m '或'我'或' n '或')'。字符类([...]
)匹配单个字符,而不是短语。
如果你试图不匹配“(admin)”,那么你可以使用这样的负向前瞻:
^(?P<restaurant_slug>(?!\(admin\))[a-zA-B-_0-9]+)$
或者,更有可能的是,您尝试不匹配“admin”:
^(?P<restaurant_slug>(?!admin)[a-zA-B-_0-9]+)$
答案 1 :(得分:0)
您似乎需要在设置和网址中添加ADMIN_STATIC_PREFIX
。