3

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

4

2 回答 2

2

我担心你的问题没有单一的答案。问题在于,在 URL 级别指定层次结构的外观与它捆绑了太多的逻辑。

我发现对用户装饰器很有用。例如,在您的情况下,您可以编写一个装饰器来检查类别的健全性,并仅将最终类别传递给视图。类似于装饰器的东西可以使用这个签名的函数:

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

检查每个类别确实是下一个类别的父级,并将视图传递给最终检查的类别。

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

如果你真的需要它是可扩展的,装饰器可以做一些自省并做出一些猜测(比如树能走多深,剩下的参数是什么样的,等等)。

然后您需要做的就是仔细编写您的 URL 配置文件,以便装饰器获得良好的参数。经过

于 2010-07-03T03:38:04.977 回答
1

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

于 2012-05-15T08:22:14.663 回答