【发布时间】:2014-12-17 21:26:26
【问题描述】:
我在使用 Django urlconf 时遇到了一个大问题。我无法让正则表达式匹配 在 urls.py 中。
这是我正在做的事情:
在我的javascript中我有
var source = 'http://127.0.0.1:8000/quiltmaker/block'+i+'/shoefly'+i+'/';
记录为
img.src http://127.0.0.1:8000/quiltmaker/block3/shoefly3/
我的 urlpatterns 是:
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^about/$', views.about, name='about'),
url(r'block(\d{1,3})/([a-z]{7})(\d{1,2})/$', views.block),
)
正则表达式在 iPython 解释器中工作:
js = 'block3/shoefly3/'
r = re.compile(r'block(\d{1,3})/([a-z]{7})(\d{1,2})/$')
r
Out[60]: re.compile(r'block(\d{1,3})/([a-z]{7})(\d{1,2})/$')
m = r.search(js)
m
Out[62]: <_sre.SRE_Match at 0x10f262ae0>
m.span()
Out[63]: (0, 16)
但是 Django 从不调用视图。
如果 urlpattern 是,它确实有效
url(r'block(\d{1,3})/shoefly(\d{1,2})/$', views.block)
请帮忙。这让我比现在更疯狂。
【问题讨论】:
-
尝试在开头添加
^。 -
views.block期望什么参数?如果您不对[a-z]{7}部分使用组,例如/[a-z]{7}(\d{1,2})/$,它是否有效? -
我尝试在开头添加 ^。还是没有骰子。但感谢您注意到我忽略了这一点。
-
谢谢,彼得。删除组有效,但我需要组将参数传递给视图。
-
好吧,我问的原因是您的视图看起来正好需要两个参数。通过三个组,它捕获的内容超出了视图的预期。