我有一个decorator,它执行与其所附加的函数相同的查询。有没有一种方法可以直接从decorator传递Queryset,这样我就不必运行查询两次了?你知道吗
装饰师.py
def is_wifi_author(func):
def wrapper(request, wifi_id, **kwargs):
wifi = get_object_or_404(Wifi, pk=wifi_id) # Queryset
# Is this correct?
if request.user != wifi.author:
return redirect('youshallnotpass')
return func(request, wifi_id, **kwargs)
return wrapper
视图.py
@is_wifi_author
def edit(request, wifi_id):
# print(request)
wifi = get_object_or_404(Wifi, pk=wifi_id) # Same queryset
# The rest of the view
return render(request, 'app/template.html')
是的,只是检查用户是否有权编辑帖子。欢迎发表意见。你知道吗
既然你可以简单地做,为什么还要用装饰工呢
是的,可以使用kwargs:
尽管我认为@Ubaid答案提到了一个有效的观点。你知道吗
相关问题 更多 >
编程相关推荐