- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正致力于在我的 Django 项目中实现一个 API,而 Tastypie 似乎是最合适的。
我似乎无法解决的是如何使用 Tastypie 在我的模型中公开一个函数。
例如,我有这个模型:
class game(models.Model):
id = models.AutoField("ID", primary_key=True, editable=False)
ip_address = models.OneToOneField(IPAddress, verbose_name="IP Address")
port = models.CharField("Port", max_length=5)
name = models.CharField("Game Name", max_length=100)
ram = models.IntegerField("RAM (mb)", max_length=10)
node = models.ForeignKey(node)
user = models.ForeignKey(User)
config = models.ForeignKey(Config)
mysqlserver = models.ForeignKey(MySQLserver)
mysqlenabled = models.BooleanField("MySQL Created?")
suspended = models.BooleanField("Suspended")
在这个模型中,我有这样的功能:
def start(self):
config = Config.objects.get(pk=self.config.id)
cmds = config.startcmds
game = config.gametype
parsedcmds = self.replace_variables(cmds)
client = phPanel.jelly.jelly.zmqclient(self.ip_address.address)
data = {'user':self.generate_username(), 'method':'start_server', 'id':self.id, 'memory':self.ram, 'ip':self.ip_address.address,
'port':self.port, 'startcmds':parsedcmds, 'game':game}
result = client.send(data)
return result
我想使用 tastypie 通过 API 公开它。
我已经查看了文档和说明书,但似乎找不到我要找的东西。
任何帮助将不胜感激:)
最佳答案
在您的游戏资源中,您始终可以预先添加可以公开方法的新网址。例如(根据@BigglesZX 的评论编辑):
from tastypie.resources import ModelResource
from tastypie.utils import trailing_slash
class GameResource(ModelResource):
class Meta:
queryset = Game.objects.all()
resource_name = 'store'
def prepend_urls(self):
""" Add the following array of urls to the GameResource base urls """
return [
url(r"^(?P<resource_name>%s)/(?P<pk>\w[\w/-]*)/start%s$" %
(self._meta.resource_name, trailing_slash()),
self.wrap_view('start'), name="api_game_start"),
]
def start(self, request, **kwargs):
""" proxy for the game.start method """
# you can do a method check to avoid bad requests
self.method_check(request, allowed=['get'])
# create a basic bundle object for self.get_cached_obj_get.
basic_bundle = self.build_bundle(request=request)
# using the primary key defined in the url, obtain the game
game = self.cached_obj_get(
bundle=basic_bundle,
**self.remove_api_resource_names(kwargs))
# Return what the method output, tastypie will handle the serialization
return self.create_response(request, game.start())
现在您可以使用以下 uri "/game/[pk]/start/"调用此方法所以“/game/1/start/”将调用pk = 1的游戏开始方法
关于python - 使用 Tastypie 公开模型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14085865/
我想在 GET 响应中包含一些字段,并在 POST 确认响应中包含较小的字段子集。我必须在 alter_detail_data_to_serialize 中拥有大量 del bundle['field
我在 tastypie 中有一个简单模型的 ModelResource,它有一个 id 和一个名称。 XML 输出如下所示。但我想用我的模型名称代替“对象”。我似乎一直在为如何解决这个问题而苦苦挣扎—
我有一个 Tastypie ModelResource,它从常规 Django 模型获取其字段。我想将 Tastypie 资源上的某些字段设置为只读,即使它们在底层模型中是可写的。这可以通过简单的方式
我知道如何为 tastypie 资源设置身份验证/授权:通过资源 Meta 类中的设置。但是,如何验证/授权对顶级模式的访问? 例如,我可以对位于/api/v1/resource 的资源进行身份验证/
第一个型号: class Profile(models.Model): username = models.CharField( _('username'),
尝试通过 python requests 以及命令行 cURL 提交 PATCH 请求,我收到以下响应: >>> r = requests.patch(url) >>> r.text u'{"erro
我在通过 tastypie api 保存项目时遇到问题。 (POST 方法) 这是我的 api.py 代码。 from tastypie.resources import ModelResource,
我在玩重客户端应用程序。 想象一下我有这个模型: class Category(models.Model): name = models.CharField(max_length=30)
是否可以使用tastypie 在相关模型上包含字段? 根据我下面的模型:如果我将一个 VideoContent 和一个 TextContent 实例持久化到数据库,那么我可以从我的 Content 资
我希望向我的 Tastypie 驱动的 API 添加某种分析。我真的很喜欢用于常规网站的 Google Analytics,但显然它不适用于 API。您通常如何对 API 进行分析?是否有任何可用于
我正在创建UserResource和UserProfileResource。当我创建一个新用户时,我看到我的用户配置文件数据库表也正在更新。哪个好但是当我得到用户时,我得到一个错误,说: The mo
我有这个代码: #api model class VideoResource(ModelResource): class Meta: queryset = Video.obje
我正在为一个项目开发 API,我通过 OrderProducts 建立了 Order/Products 关系,如下所示: 在目录/models.py class Product(models.Mode
我设置了 Django Tastypie API。 我想在数据库中查询与名称匹配的对象数。 这在现有模型资源上是否可行,或者我是否需要设置新资源来处理这种特定情况? (这些数据通常在结果的元数据部分返
我试图让我的 api 给我与tastypie 的反向关系数据。 我有两个模型,DocumentContainer 和 DocumentEvent,它们的关系如下: DocumentContainer
我正在构建一个 django 美味的 api,我在 ManyToMany 中添加元素时遇到问题关系 例子, 模型.py class Picture(models.db): """ A pict
我正在尝试创建一个具有 0 到无限评论的资源(观察)。我陷入了以下错误: "error": "The model '' has an empty attribute 'comments' and do
我无法让这个为我的生活工作。 我在 api.py 中有这个 class catResource(ModelResource): class Meta: queryset = c
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 4年前关闭。 Improve this qu
我正在使用 Tastypie 为 Django 应用程序创建 REST API,并希望能够在一个 POST 中创建新对象和相关对象。相关对象由用于查找它们的名称指定,如果找不到名称,我想创建新对象。
我是一名优秀的程序员,十分优秀!