【问题标题】:django Piston: How can I define custom methods in a handler?django Piston:如何在处理程序中定义自定义方法?
【发布时间】:2012-04-21 21:29:55
【问题描述】:

我创建了一个 handler.py 并想编写一个方法:getBooksForUser()。此方法将返回用户发行的所有书籍。 文档说:

除此之外,您还可以定义任何其他您想要的方法。你 可以通过在 fields 指令中包含它们的名称来使用它们,并通过 这样做,将使用单个参数调用该函数: 模型的实例。然后它可以返回任何东西,并且返回 value 将用作该键的值。

在字段中,我已经写了我想要返回的书籍的属性。我应该只在此处包含方法名称 (getBooksForUser) 吗?

如果可能,请给我一个代码示例。

【问题讨论】:

    标签: django django-piston


    【解决方案1】:

    我知道这并不能回答有关自定义方法的问题,但可能有助于解决您的问题。

    网址:

    (r'^books\.json$', Resource(BookHandler)),
    (r'^books/(?P<user_id>[0-9]+)\.json$', Resource(BookHandler)),
    

    处理程序:

       from piston.handler import BaseHandler
       from myapp.models import Book
    
       class BookHandler(BaseHandler):
          allowed_methods = ('GET',)
          model = Book   
    
          def read(self, request, user_id=None):
              base = Book.objects
              if user_id:
                  return base.filter(user_id=user_id)
              return base.all()
    

    我从文档here 中获得了示例:

    【讨论】:

    • 我喜欢这个。这种方法比 django-piston 建议的通过字段添加自定义方法要明确和清晰得多?感觉很笨拙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多