如何在Django中的url regex中使用查询结果

时间:2015-05-08 18:46:06

标签: regex django django-urls python-import

我想使用数据库查询来生成我的URL配置。类似的东西:

std::bind

然后是正则表达式:

states = State.objects.all().values_list('pk', flat=True)

我的想法是,我可以拥有以下网址:

(r'^state/(?P<state>' + '|'.join(states) + ')/$'

等。

问题是当我执行/state/ca/ /state/az/ 时,上面的查询失败,抛出syncdb

这样做有好办法吗?我尝试过这个明显的改变,那就是:

DatabaseError

但是这不起作用,因为在正则表达式中抛出异常,而不是在查询定义中抛出异常。

想法?

1 个答案:

答案 0 :(得分:3)

为什么需要在URL模式本身中约束它?接受所有双字母代码要好得多,并查看视图。

(r'^state/(?P<state_code>\w{2})/$'

def view_state(request, state_code):
    state = get_object_or_404(State, pk=state_code)