这是一个相对简单的问题。
如果views.py
中的方法可以动态地返回它在错误中捕获的URL并让稍后的处理程序处理它。例如:
urls.py
urlpatterns = patterns('myapp.views',
url(r'^foo/(?P<fiz>\d+)/?$', too_broad_method,name="foo"),
url(r'^foo/bar/?$', just_right_method,name="foo"),
)
views.py
def too_broad_method(request,fiz=None):
if fiz == some_dynamic_value:
# under some runtime conditions fiz can equal bar
# Throw some exception to give the URL back??
else:
return process_it()
让我们假设,例如,/foo/bar
如果项目的名称为too_broad_method
,则应由bar
捕获并处理,否则应由just_right_method
处理。
对于额外的上下文,我试图抓住app_label/model_name
形式的网址,它不遵循任何模式。我希望首先捕获这些,然后再使用非常广泛的正则表达式。
答案 0 :(得分:1)
(自问题改变的整个前提后编辑)
如果您需要抓取app_name/model_name
网址,我建议您动态生成网址格式。没有理由你无法迭代INSTALLED_APPS,获取从models.Model
继承的所有可用类,并相应地在列表中创建URL模式。然后,您可以将其提供给最后的patterns
函数。
正如我已经解释过的那样,尝试通知URL调度程序它是某种“错误的”是错误的,而你是solving the wrong problem。相反,您应该专注于配置URL模式以实际需要它们。