我有一些代码在我的Django视图开始时重复。它基本上只是在上下文中添加了一些变量,但是基于URL参数,例如
def someView(request, id):
target = Target.objects.get(id=id)
# name will be added to ctx
name = target.name
(添加了更多属性以及来自相关模型的其他属性,但这给出了一般的想法 - 每个视图的开头有相当多的重复代码行)
我认为通过利用Django的上下文处理器可以使我的代码更干,但似乎这些不能访问URL参数?
还有另一种方法可以避免这些重复的线条吗?也许中间件或其他东西?
答案 0 :(得分:2)
您可以通过resolver_match
属性通过request
访问网址参数。例如,您可以request.resolver_match.kwargs['id']
获取ID kwarg。