【问题标题】:Django URLConf not matching valid regexDjango URLConf 不匹配有效的正则表达式
【发布时间】: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})/$,它是否有效?
  • 我尝试在开头添加 ^。还是没有骰子。但感谢您注意到我忽略了这一点。
  • 谢谢,彼得。删除组有效,但我需要组将参数传递给视图。
  • 好吧,我问的原因是您的视图看起来正好需要两个参数。通过三个组,它捕获的内容超出了视图的预期。

标签: python regex django


【解决方案1】:

感谢 Peter DeGlopper 为我指明了正确的方向。 urlconf 没有将我发送到视图,因为视图需要两个参数,而我发送了三个。将另一个参数添加到视图中就可以了:

之前

def block(request, idx, blockno)

之后

def block(request, idx, type, blockno)

【讨论】:

    猜你喜欢
    • 2011-03-06
    • 2017-07-05
    • 1970-01-01
    • 2018-04-16
    • 2011-08-17
    • 2017-09-12
    • 2019-12-26
    • 1970-01-01
    相关资源
    最近更新 更多