Django:分层URL

时间:2010-07-02 21:53:55

标签: django django-urls django-views django-mptt

如何处理Django中的分层URL?有什么最佳做法吗? 例如。如果我有一个像/blog/category1/category2/myblogentry这样的网址(使用例如django-mptt),你会在urls.py之前做一些检查,或者给整个路径一个视图,让它检查每个部分是否是有效的类别等? 听起来不是那么难,但只是好奇是否有人可以推荐一些最佳实践或者能展示一些好的(通用的)解决方案?

2 个答案:

答案 0 :(得分:2)

我担心你的问题没有单一答案。问题是,在URL级别指定层次结构的内容会捆绑过多的逻辑。

我发现用户装饰器很有用。例如,在您的情况下,您可以编写一个装饰器来检查类别的完整性,并仅在视图中传递最终类别。像装饰器一样可以使用此签名的函数:

f(request, cat1, catN..., slug)

检查每个类别确实是下一个类别的父级,并向下传递最终选中的类别。

@validate_category_hierarchy
def post_in_category(request, category, slug):

如果你真的需要它是可扩展的,装饰者可以做一些内省并做一些猜测(例如树的深度,剩下的参数是什么等)。

然后您需要做的就是仔细编写您的URL confs,以便装饰器获得良好的参数。        通

答案 1 :(得分:1)

这是http://djangosnippets.org/snippets/362/也很有用。允许在没有装饰器的情况下解决检查URL是否匹配的问题。