【发布时间】:2018-06-27 11:37:58
【问题描述】:
我正在开发一个 django 项目,在该项目中我需要为一些执行构建一个 rest API,我对模型没有太多顾虑,因为我只需要根据用户的输入/调用执行执行。
这是我的场景:
主要是部署(我项目中的一个应用程序)
在获取请求时,用户将获得所有内容的列表 部署(对象)。
-
用户将向 /deployments 发送一个 POST 请求以及完整的 对象为:
{ "deployment_name": "dep4", "credentials": "cre4", "project_name": "pro4", "project_id": "004", "cluster_name": "clus4", "zone_region": "zon4", "services": "Single", "configuration": "conf4", "routing": "route4" }然后我需要使用这些数据,验证并在这些数据的基础上执行一些操作。例如,我将借助这些信息,使用第三方 API 在云平台上进行部署。
我真的对 DRF 的文档感到困惑,尤其是关于序列化程序的文档。
更新:目前,我正在尝试如何进行 POST: 来自 apiview.py
class DeploymentsList(APIView):
queryset = DeploymentOnUserModel.objects.all()
def post(self, request):
print(request.data)
DeploymentOnUserModel.objects.create(
deployment_name=request.data['deployment_name'],
credentials=request.data['credentials'],
project_name=request.data['project_name'],
project_id=request.data['project_id'],
cluster_name=request.data['cluster_name'],
zone_region=request.data['zone_region'],
services=request.data['services'],
configuration=request.data['configuration'],
routing=request.data['routing'],
)
return Response(request.data)
那么,如何验证传入的数据/请求?
这是我的部署模型:
class DeploymentOnUserModel(models.Model):
deployment_name = models.CharField(max_length=256, )
credentials = models.TextField(blank=False)
project_name = models.CharField(max_length=150, blank=False)
project_id = models.CharField(max_length=150, blank=True)
cluster_name = models.CharField(max_length=256, blank=False)
zone_region = models.CharField(max_length=150, blank=False)
services = models.CharField(max_length=150, choices=services)
configuration = models.TextField()
routing = models.TextField()
def save(self, **kwargs):
if not self.id and self.services == 'Multiple' and not self.routing and not self.configuration:
raise ValidationError("You must have to provide routing for multiple services deployment.")
super().save(**kwargs)
来自 urls.py:
app_name = 'deployments'
urlpatterns = [
path('deployments/', apiview.DeploymentsList.as_view(), name='deployment_list'),
path('deployments/<int:pk>', apiview.DeploymentDetail.as_view(), name='deployment_detail')
]
我应该使用 DRF 中的哪种方法和东西来实现我的 API。
【问题讨论】:
-
您能否详细说明您的查询是什么,以便我们能够提供帮助?
-
好吧,问题是:如果您不需要 DRF 功能并且 DRF 实际上会妨碍您,您为什么要使用 DRF?你不需要它来用 Django 构建一个 REST api,你可以手动完成(它最终只是请求和响应)或者使用一些更轻的库,比如 toastdriven 的
restless。 -
嗨 @brunodesthuilliers,我需要 drf 提供的其他内容,例如权限、身份验证等。
-
嗨@MuhammadFahadManzoor,要实现我自己的get和posts,比如django视图,我应该使用APIView吗?
标签: python django python-3.x django-rest-framework