django页面参数传递,django写api接口
1、新的框架项目名称为restframeworkdemo,应用程序名称为图书测试
2、创建数据库,设置为setting.py
databases={ default :} engine : django。db。后端。MySQL ,#要连接到数据库的类型name : restaste USER:root , PASSWORD:123456 ,}3,在models.py中制作图书模型类图书信息表
来自姜戈。db导入模型#在此处创建您的模型.#定义图书模型类bookinfo foclassbookinfo(模型。型号)3360 btitle=型号。chere bpub _ date=车型。日期字段(详细名称=发布日期)面包=模特。整数字段)默认详细名称="读取详细名称=逻辑删除) #请注意,如果模型已经迁移到临时表中,并且表中已有数据,则以后添加的字段可以为默认值,也可以为空。否则,迁移将使用classmeta : db _ table= TB _ books #将数据库表名称verbose _ name= books #显示在管理站点中的名称详细名称=显示:""并定义每个数据对象的显示信息" "回归自我。标题4,然后在控制台上运行以下命令以创建表
python manage.py makemigrations #记录模型的变更,将变更记录记录在对应的应用下的migrationspithonmanage。py迁移# #中,翻译成结构化查询语言语句,并将其翻译成数据库
导入os,django,syssys.path.append, ./ ) OS.environ.setdefault, django_settings_module , restframeworkdemo。设置)#项目名称项目名称姜戈。设置(来自booktest。modelsimportbookinfok 1=图书信息。modelsimportbookinfo bpub _ date book 2=图书信息。对象。创建(btitle=三国演义,bpub _ date= 1998-11-11 bpub _ date= 1999-11-11 )
来自姜戈。viewsimportviewfromdjango。httpimporthttpresponse、jonresponse来自。modelsimportbookinfoimportjsonfromdatetimetime请求(: )检查所有图书接口) 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返回JSON响应(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)#此处详细的校验参数省略图书=图书信息。对象。create(btitle=book _ dict。get( btitle ),bpub _ date=datetime。strptime(book _ dict。get( bpub _ date ), %Y-%m-%d ).日期())返回JsonResponse({ id: book.id, btitle: book.btitle, bpub_date: book.bpub_date, bread: book.bread, bcomment: book.bcomment,},status=201)类BookDetailView(视图): 详情视图定义获取(自身,请求,主键):#查询指定图书接口#1、获取出指定公园的那个模型对象try:book=BookInfo。对象。get(id=PK)除了图书信息.不存在:返回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 JSON response(book _ dict)def put(self,request,pk): 修改图书信息路由:PUT/books/PK try:book=book info。对象。get(PK=PK)除了图书信息.DoesNotExist:return HttpResponse(status=404)JSON _ bytes=request。body JSON _ str=JSON _ bytes。decode()book _ dict=JSON。loads(JSON _ str)#此处详细的校验参数省略书。btitle=book _ dict。得到(标题)书。bpub _ date=日期时间。strptime(book _ dict。get( bpub _ date ), %Y-%m-%d ).日期()书。save()返回JSON响应({ 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=book info。对象。get(PK=PK)除了图书信息.DoesNotExist:返回HttpResponse(status=404)图书。delete()返回HttpResponse(status=204)6、主项目下urls.py,将路由转到到子项目
从django.urls导入re_path,includeurlpatterns=[re_path(^,include(booktest.urls])]7、booktest下urls.py,将路由转到处理的血容量中
从django.urls导入路径,re_pathfrom .导入视图模式=[ #列表视图的路由re_path(r^books/$,views.booklistview.as_view()),re_path(r^books/(?Ppk\d )/$ ,视图BookDetailView.as_view())] 8、然后使用邮递员测试下接口
(1)直接得到请求http://127 .0 .0 .1:8000/本书/获取全部图书信息
(2)获取http://127 . 0 . 0 . 1:8000/本/2/获取单个图书信息
(3)邮政http://127 .0 .0 .1:8000/册/新增图书数据
(4)邮政http://127 .0 .0 .1:8000/册/9/修改图书数据
得到查看一下已经修改成功
(5)删除http://127 . 0 . 0 . 1:8000/本/9/删除图书数据,返回204
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。