Tastypie Django,带有 prepend_url 的自定义视图
Tastypie Django, Custom view with prepend_url
我正在尝试为我的 REST 接口创建一个自定义端点,但遇到了一些问题.. 希望有人能帮我解决 ;)
我想制作资源的自定义视图,但我仍然想要默认的分页功能。
class ShareResource(ModelResource):
.....
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/dialog/(?P<account_id>\w[\w/-]*)%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('dialog'), name="api_dialog"),
]
def dialog(self, request, **kwargs):
self.method_check(request, allowed=['get'])
self.is_authenticated(request)
account_id = kwargs['account_id']
shares = Share.objects.filter(
Q(account=request.user.account, post__account__id=account_id) |
Q(post__account=request.user.account, account=account_id)
).order_by("-created")
raise Exception(shares)
return self.get_list(request, objects=shares)
我的问题是函数 "get_list" .. 是否有将对象作为 arg 的替代方法?还是有更好的方法来制作自定义视图?
尝试改写 obj_get_list
:https://github.com/django-tastypie/django-tastypie/blob/master/tastypie/resources.py#L2124
您需要将 account_id
关闭 kwargs
并按此过滤。
此外,不要只过滤默认 obj_get_list
方法的结果,您需要 authorized_read_list
在 之后 调用任何过滤出于安全原因执行。
我正在尝试为我的 REST 接口创建一个自定义端点,但遇到了一些问题.. 希望有人能帮我解决 ;)
我想制作资源的自定义视图,但我仍然想要默认的分页功能。
class ShareResource(ModelResource):
.....
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/dialog/(?P<account_id>\w[\w/-]*)%s$" % (self._meta.resource_name, trailing_slash()), self.wrap_view('dialog'), name="api_dialog"),
]
def dialog(self, request, **kwargs):
self.method_check(request, allowed=['get'])
self.is_authenticated(request)
account_id = kwargs['account_id']
shares = Share.objects.filter(
Q(account=request.user.account, post__account__id=account_id) |
Q(post__account=request.user.account, account=account_id)
).order_by("-created")
raise Exception(shares)
return self.get_list(request, objects=shares)
我的问题是函数 "get_list" .. 是否有将对象作为 arg 的替代方法?还是有更好的方法来制作自定义视图?
尝试改写 obj_get_list
:https://github.com/django-tastypie/django-tastypie/blob/master/tastypie/resources.py#L2124
您需要将 account_id
关闭 kwargs
并按此过滤。
此外,不要只过滤默认 obj_get_list
方法的结果,您需要 authorized_read_list
在 之后 调用任何过滤出于安全原因执行。