Django在URL中匹配点时的异常行为

2 投票
1 回答
986 浏览
提问于 2025-04-17 13:00

如果我有以下的URL配置:

urlpatterns = patterns('',
    url(r'^projects-json$', 'projects.views.list'),
)

当我访问 /projects-json 时,URL能正常解析。注意,这里没有结尾的斜杠。

但是我想在URL中使用点,而不是连字符,所以我把URL配置改成了这样:

urlpatterns = patterns('',
    url(r'^projects\.json$', 'projects.views.list'),
)

现在,当我访问 /projects.json 时,它会重定向到 /projects.json/,结果是出现404错误!如果我在URL模式中加上结尾的斜杠,那么访问带斜杠的URL就会正常。但我只想要一件简单的事情:直接匹配 /projects.json,不想有任何重定向和斜杠。Django能做到这一点吗?我为这个简单的问题浪费了太多时间。有没有人能发现我的错误?

settings.APPEND_SLASH = False。不过看起来这并没有什么用。以防万一,这可能有影响:

MEDIA_ROOT = ''
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/admin-media/'

1 个回答

5

对我来说一切正常(设置了 APPEND_SLASH = False)。可能是浏览器的问题,有些浏览器(比如Firefox)会缓存重定向,所以即使服务器上没有重定向,它还是会把你重定向过去。你可以试试换个浏览器。

撰写回答