Django平台数据服务
django-pds的Python项目详细描述
Info: | Faster REST API development using Django and mongodb |
---|---|
Repository: | https://github.com/knroy/django-pds |
pds代表平台数据服务。你需要更快地创建restapi吗?只是一些配置然后我们走?django pds是来帮忙的。在
django-pds
::使用Django和mongodb进行更快的restapi开发,具有行级安全性和现成的内置前端查询支持。在
django-pds
提供了一些复杂的方法,可配置为更快地使用Django和MongoDB创建restapi。在
快速入门
安装:
pipinstalldjango_pds
创建新应用:
^{pr2}$在settings
中添加django-pds
和api
应用程序。当我们要使用restapi时,rest_framework
和{django_pds
建立在^{MongoEngine
时,不直接支持admin。因此,INSTALLED_APPS
list的基本结构如下所示
INSTALLED_APPS=['rest_framework','django.contrib.staticfiles','corsheaders','django_pds','api']
djangosettings
文件将如下所示:
.....importmongoengine......ALLOWED_HOSTS=['*']REST_FRAMEWORK={'UNAUTHENTICATED_USER':None}INSTALLED_APPS=['rest_framework','django.contrib.staticfiles','corsheaders','django_pds','api']MIDDLEWARE=['corsheaders.middleware.CorsMiddleware','django.middleware.common.CommonMiddleware']CORS_ORIGIN_ALLOW_ALL=TrueCORS_ALLOW_METHODS=('DELETE','GET','OPTIONS','PATCH','POST','PUT',)...............DATABASES={}# mongodb connectionMONGODB_DATABASE_NAME='django_pds_db'mongoengine.connect(MONGODB_DATABASE_NAME)..........
定义文档架构:
frommongoengineimport*fromdjango_pds.core.baseimportSimpleBaseDocumentclassPage(SimpleBaseDocument):title=StringField(max_length=200,required=True)tags=ListField(StringField(required=True),required=True)
创建插入Rest API:
在api
appviews.py
文件中创建一个名为RestInsert
的类
importjsonfromuuidimportuuid4fromrest_frameworkimportstatusfromrest_framework.responseimportResponsefromdjango_pds.core.pds.genericimportdata_insertfromdjango_pds.core.rest.responseimporterror_response,success_responsefromdjango_pds.core.rest.viewsimportBaseAPIViewclassRestInsert(BaseAPIView):defpost(self):try:document_name='Page'data={"ItemId":str(uuid4()),"title":"Using django-pds","tags":["django","django-pds","mongoengine"]}# as we are not checking row level security,# ignoring offered row level securityerror,result=data_insert(document_name,data,ignore_security=True)iferror:response=error_response(result)returnResponse(response,status=status.HTTP_400_BAD_REQUEST)response=success_response(result)returnResponse(response,status=status.HTTP_400_BAD_REQUEST)exceptBaseExceptionase:response=error_response(str(e))returnResponse(response,status=status.HTTP_400_BAD_REQUEST)
在api.urls.py
中添加视图:
fromdjango.urlsimportre_pathfrom.viewsimportRestInserturlpatterns=[re_path(r'^insert$',RestInsert.as_view(),name='rest api insert'),]
并在应用程序app_name.urls
中添加rest api应用程序:
fromdjango.urlsimportinclude,re_pathurlpatterns=[re_path(r'^rest_api/',include('api.urls'))]
如何让它充满活力?如何通过请求发送数据或从前端发送数据,并在API中从请求中收集数据并插入数据库?在
我们需要稍微更改一下RestInsert
API视图,如下所示:
fromdjango_pds.core.rest.decoratorsimportrequired....classRestInsert(BaseAPIView):# required decorator check request.data # before calling the post method for these required params@required("document_name","data")defpost(self,request):try:# we are expecting payload with the requestdocument_name=request.data['document_name']data=request.data['data']# as we are not checking row level security,# ignoring offered row level security.....
要请求这个restapi端点,请使用postman
或{
卷曲请求:
curl --header "Content-Type: application/json" \
--request POST \
--data '{
"document_name": "Page",
"data": {
"ItemId": "30447042-e0a3-4f15-8fd0-b3742d9538a9",
"title": "django pds test page",
"tags": ["mongoengine", "django-pds"]
}
}' \
http://localhost:8000/rest_api/insert
或者用邮递员:
继续阅读django-pds wiki,了解Django PDS的积垢操作。在
- 项目
标签: