首页 > 编程知识 正文

django接口开发,django url传递参数

时间:2023-05-04 15:51:17 阅读:165353 作者:3074

1、新的django项目名称为restframeworkdemo,app名称为booktest

2、创建数据库,设置为setting.py

databases={ ' default ' : } ' engine ' : ' django.db.backends.MySQL ',#要连接到数据库的类型' name ' : ' restaste ' USER':'root ',' PASSWORD':'123456 ',}3、在models.py中制作图书模型类BookInfo

from django.dbimport models # createyourmodelshere.#定义图书模型类bookinfoclassbookinfo (models.model ) 3360 btitle=models.chere bpub _ date=models.date field (verbose _ name='发布日期') bread=models.integerfield ) defauld verbose_name=“读取verbose_name='逻辑删除') #请注意,如果模型已经迁移到临时表中,并且表中已有数据,则以后添加的字段可以为默认值,也可以为空。 否则,迁移将使用classmeta : db _ table=' TB _ books ' #将数据库表名称verbose _ name=' books ' #显示在管理站点中的名称verbose_name=显示:“”并定义每个数据对象的显示信息“”return self.btitle 4,然后在控制台上运行以下命令以创建表

python manage.py makemigrations #记录models的变更,将变更记录记录在对应的APP下的migrationspythonmanage.py migrate # #中,翻译成SQL语句,并将其翻译成数据库

import os,django,syssys.path.append,'./' ) OS.environ.setdefault,' django_settings_module ', ' restframeworkdemo.settings ' ) # project_name项目名称django.setup (frombooktest.modelsimportbookinfobok1=bookinfo.modelsimportbookinfo bpub _ date book2=bookinfo.objects.create (btitle='三国演义',bpub _ date=' 1998-11-11 ' bpub _ date=' 1999-11-11 ' )

from django.viewsimportviewfromdjango.httpimporthttpresponse,jonresponsefrom.modelsimportbookinfoimportjsonfromdatetetimetimetime request(: )检查所有图书接口) 1,检查所有图书模型books=BookInfo.objects.all ) #2,遍历查询集,遍历其中的每个图书模型对象转换为forbookinbooks : book _ dict={ ' id ' : book.id,' btitle':book.btitle,' bpub_}

'bread':book.bread, 'bcomment':book.bcomment, } book_list.append(book_dict) # 3、响应,非字典类型需要设置safe=False return JsonResponse(book_list,safe=False) def post(self, request): """ 新增图书 路由:POST /books/ """ json_bytes = request.body json_str = json_bytes.decode() book_dict = json.loads(json_str) # 此处详细的校验参数省略 book = BookInfo.objects.create( btitle=book_dict.get('btitle'), bpub_date=datetime.strptime(book_dict.get('bpub_date'), '%Y-%m-%d').date() ) return JsonResponse({ 'id': book.id, 'btitle': book.btitle, 'bpub_date': book.bpub_date, 'bread': book.bread, 'bcomment': book.bcomment, }, status=201)class BookDetailView(View): ''' 详情视图 ''' def get(self,request,pk): #查询指定图书接口 #1、获取出指定pk的那个模型对象 try: book=BookInfo.objects.get(id=pk) except BookInfo.DoesNotExist: return HttpResponse({'message':'查询的数据不存在'},status=404) #2、模型对象转字典 book_dict = { 'id': book.id, 'btitle': book.btitle, 'bpub_date': book.bpub_date, 'bread': book.bread, 'bcomment': book.bcomment, } #3、响应 return JsonResponse(book_dict) def put(self, request, pk): """ 修改图书信息 路由: PUT /books/<pk> """ try: book = BookInfo.objects.get(pk=pk) except BookInfo.DoesNotExist: return HttpResponse(status=404) json_bytes = request.body json_str = json_bytes.decode() book_dict = json.loads(json_str) # 此处详细的校验参数省略 book.btitle = book_dict.get('btitle') book.bpub_date = datetime.strptime(book_dict.get('bpub_date'), '%Y-%m-%d').date() book.save() return JsonResponse({ 'id': book.id, 'btitle': book.btitle, 'bpub_date': book.bpub_date, 'bread': book.bread, 'bcomment': book.bcomment, }) def delete(self, request, pk): """ 删除图书 路由: DELETE /books/<pk>/ """ try: book = BookInfo.objects.get(pk=pk) except BookInfo.DoesNotExist: return HttpResponse(status=404) book.delete() return HttpResponse(status=204)

6、主项目下urls.py,将路由转到到子项目

from django.urls import re_path,includeurlpatterns = [ re_path('^',include('booktest.urls'))]

7、booktest下urls.py,将路由转到处理的CBV中

from django.urls import path,re_pathfrom . import viewsurlpatterns = [ #列表视图的路由 re_path(r'^books/$',views.BookListView.as_view()), re_path(r'^books/(?P<pk>d+)/$', views.BookDetailView.as_view())]

8、然后使用postman测试下接口

(1)直接get请求http://127.0.0.1:8000/books/获取全部图书信息

(2)GET http://127.0.0.1:8000/books/2/获取单个图书信息

(3)POST http://127.0.0.1:8000/books/新增图书数据

(4)POSThttp://127.0.0.1:8000/books/9/修改图书数据

get查看一下已经修改成功

(5)DELETE http://127.0.0.1:8000/books/9/删除图书数据,返回204

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。