初识Django —Python API接口编程入门 (2)

这样我们就新建了一个xx_tab命名的app,我们要做一些修改:

1、还是打开settings.py文件,找到INSTALLED_APPS参数,在最后面加入xx_tab的app名,如下: INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework_swagger',
    'rest_framework',
    'rest_framework_jwt',
    'xx_tab’,
]
 
 

2、修改xx_tab目录下得而models.py文件,定义我们需要建的表

# Create your models here.
class Xx_Tab(models.Model):
    pk_id = models.AutoField(primary_key=True)
    xx_id = models.IntegerField()
    xx_name = models.CharField(max_length=200)
 

 

3、修改url

完成数据库表的定义后,考虑到使用http来访问数据库的,那就离不开http的url地址。前面在文件介绍中说过用django-admin.py startproject [project_name]命令生成项目后,在项目层目录下会有url的python文件,在每个项目下用django-admin startapp  xx_tab命令生成的app中也会有url的python文件,url好比是网站网页的目录,是用来在web界面上访问的地址。一般,url会对于view,view好比是网页,url指向view。

项目rul、app rul和app view之间的调用关系,如下图:

初识Django —Python API接口编程入门

 

Project rul格式:

# 几个测试接口 router = routers.DefaultRouter()   urlpatterns = [
url('^hello/$', hello),
url('^simple/$', Simple.as_view()),   url( r'/log/', include(xx_tab.urls')), ]
 

App rul格式

urlpatterns = [
    url(r'list/$', views.get_xx_tabs,),
    url(r'detail/([0-9]+)$', views.get_xx_tab),
    url(r'delete/([0-9]+)$', views.delete_xx_tab),
    url(r'update/([0-9]+)$', views.update_xx_tab),
    url(r'add/$', views.add_xx_tab),
]
 

以上是两层url调用举例:

url在浏览器中的完整写法应该如下:

?xx_id=1

4、用Django生成数据库中的表

完成了在Django框架models.py文件中定义了xx_tab表的相关信息,我们就可以用django命令来生成表。

python manage.py makemigrations xx_tab

注意:xx_tab是app名,此命令会在xx_tab app下migrations目录下生成一个0001_initial.py文件,此文件定义了建表信息,如果发现表定义有问题,在修改models.py中的定义后,需要删除0001_initial.py文件,重跑python manage.py makemigrations xx_tab,重新生成0001_initial.py。

执行python manage.py migrate xx_tab,在数据库中生成xx_tab表。

打开Sqlite数据库,在windows下可用

d:\dt\sqlite\sqlite3.exe db.sqlite3 打开当前的数据库,sqlite3.exe可在网上下载。

.table可查看当前的表。

.schema tab_name 可查看表结构定义。

5、API接口,实现ADD单行数据

我们要模拟从前台发出一个get或post请求,调用要写的api接口实现插入数据库的功能,

如下界面,模拟前台调用

 

初识Django —Python API接口编程入门

 

 

上面是一个插入演示页面,post相关表字段值,完成对数据库的一行数据插入。

完成这已插入过程的逻辑关系如下:

 

View.py主要是接收前台post过来的数据,并在完成处理、存储后返回相关信息。

Service.py主要处理数据,格式化数据

数据库接口层主要处理对数据库的数据存储和访问。

view.py

开头,以下这几行是必不可少的

# -*- coding: utf-8 -*- from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response

 

因为在urls.py中我们定义的是url(r'add/$', views.add_xx_tab)

add指向views.add_xx_tab

所以我们在views中需要定义add_xx_tab函数

 

@api_view(['POST', 'GET'])
def xx_tab_add(request, *args):           #1、接收request数据 #2、处理数据
#3、返回结果  

基于django rest_framework,在处理client http request时需要用到@api_view修饰。

同时,我们也需要弄清楚对于从client端GET或POST过来的数据我们怎么处理。

#1、接收request数据

if request.method == 'GET':

    do_something()

elif request.method == 'POST':

    do_something_else()

 

如果是GET,需要处理request .query_params;如果是post需要处理request .data

if request.method == 'GET':

for k in request .query_params:

   dict[k] = request .query_params[k]

return dict

elif request.method == 'POST':

for k in request.data

dict[k] = request .data [k]

return dict

 

#2、处理数据

首先要判断get或post过来的数据是否满足我们的要求,例如缺少字段、类型错误等。

如果数据没有问题,再存入数据库。

主要是对上面dict的处理,主要都是python语句实现,不涉及Django,此处省略。

逻辑过程:

1、判断传入的request是否缺少相应的字段

2、判断传入的request是否有类型错误

方法:

例如雇员表,add一行需要有以下信息,先定义一个list,用来和传入数据作对比即可

emp = ["empno:int","ename:str","job:str","mgr:int","hiredate:str","sal:int",

"comm:int","deptno:int"]

如果

#3、返回结果

直接返回插入成功即可。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzfyd.html