0

我在 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}),
)

问题是,通过这种配置,我在运行服务器的控制台上看到了类似的东西

“获取 /img/field_bg.gif HTTP/1.1”404

对于所有应该静态提供的图像。

我可以[^(admin)]从最后一个模式中删除 并且该站点将得到很好的服务,除了它会尝试将管理界面重新路由到静态文件。

在此先感谢您帮助我结合静态文件、无子域 TemplateViewing 和管理员正常访问。

4

2 回答 2

3

我不太了解python正则表达式,但是在我曾经使用过的任何其他风格中,都会匹配[^(admin)]一个字符,除了' ' OR'a'OR'd'OR'm'OR'i'OR'之外的任何东西n '或' ) '。字符类 ( ) 匹配单个字符,而不是短语。[...]

如果您尝试不匹配“(管理员)”,那么您可以使用负前瞻,如下所示:

^(?P<restaurant_slug>(?!\(admin\))[a-zA-B-_0-9]+)$

或者,更有可能的是,您试图不匹配“管理员”:

^(?P<restaurant_slug>(?!admin)[a-zA-B-_0-9]+)$
于 2013-01-24T13:33:52.080 回答
0

看起来您需要添加ADMIN_STATIC_PREFIX到您的设置和网址。

于 2013-01-24T12:36:29.040 回答