【问题标题】:How to use query results in url regex in Django如何在 Django 的 url 正则表达式中使用查询结果
【发布时间】:2015-07-19 18:45:08
【问题描述】:

我想使用数据库查询来生成我的 URL 配置。比如:

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

然后是一个正则表达式:

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

我的想法是我可以有这样的 URL:

/state/ca/
/state/az/

等等。

问题是当我做syncdb时,上面的查询失败,抛出一个DatabaseError

有什么好办法吗?我已经尝试了明显的改变,那就是:

try:
    states = State.objects.all().values_list('pk', flat=True)
except DatabaseError:
    # First sync, use dummy data
    states = []

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

想法?

【问题讨论】:

    标签: regex django django-urls python-import


    【解决方案1】:

    为什么需要在 URL 模式本身中限制这一点?最好接受所有两个字母的代码,然后在视图中检查。

    (r'^state/(?P<state_code>\w{2})/$'
    
    def view_state(request, state_code):
        state = get_object_or_404(State, pk=state_code)
    

    【讨论】:

    • 好电话。没有特别好的理由在那里做。有时我只是对自己的方法视而不见。谢谢。
    猜你喜欢
    • 2013-04-27
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2011-03-22
    • 2013-07-26
    • 2014-07-08
    相关资源
    最近更新 更多