我正在尝试使用ETAG HTTP标头来发送304 NOT MODIFIED响应。使用以下代码:
class MyView(GenericAPIView):
serializer_class = MySerializer
@condition(etag_func=get_language_etag)
def get(self, request, *args, **kwargs):
return Response(self.get_cached_response())
问题在于get方法中的'self'参数。这会混淆@condition生成器方法中条件方法开头的参数。
def condition(etag_func=None, last_modified_func=None):
def decorator(func):
@wraps(func, assigned=available_attrs(func))
def inner(request, *args, **kwargs):
现在,'self' 被分配给请求并且实际的请求最终出现在*args中。
是否有人遇到过与装饰器及其参数顺序相关的类似问题?