如何用Django和restful搭建api接口服务

因为在一个项目需要接口服务。通过接口url可以实现写入和读取等功能。

django 搭建web服务

1)新建一个 django project

django-admin.py startproject project_name (例如本案例项目名为ads)

2)新建 app

python manage.py startapp app_name  (例如本应用名为material)

一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。
还得在工程目录的settings.py文件在配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework', # 
     
    'app_name',
]

在app/views.py下编写代码

def index(request):
    return HttpResponse(u"你好")

在工程目录urls.py配置

from learn import views as learn_views
urlpatterns = [
    url(r'^$', learn_views.index), 
]

通过python manage.py runserver启动,就会看到我们输出的“你好”了

3)创建数据库表 或 更改数据库表或字段

在app下的models.py创建表

from django.db import models

class DeadWx(models.Model):
    deadwx = models.CharField(max_length=100)

    class Meta:
        ordering = ['deadwx']

class CheckWx(models.Model):
    did = models.CharField(max_length=50)
    calltel = models.CharField(max_length=50)
    user = models.CharField(max_length=500)
    siteid = models.IntegerField()
    agentid = models.IntegerField()
    agentname = models.CharField(max_length=50)
    wx = models.CharField(max_length=50)
    status = models.CharField(max_length=50)
    updatetime = models.CharField(max_length=50)
    created_time = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-created_time']

运行命令,就可以生成对应的表

Django 1.7.1及以上 用以下命令
# 1. 创建更改的文件
python manage.py makemigrations
# 2. 将生成的py文件应用到数据库
python manage.py migrate

from django.db import models
在views.py文件里就可以获取数据库的数据

def create(request):
    # 新建一个对象的方法有以下几种:
    Person.objects.create(name='xiaoli', age=18)
    # p = Person(name="WZ", age=23)
    # p = Person(name="TWZ")
    # p.age = 23
    # p.save()
    # 这种方法是防止重复很好的方法,但是速度要相对慢些,返回一个元组,第一个为Person对象,
    # 第二个为True或False, 新建时返回的是True, 已经存在时返回False
    # Person.objects.get_or_create(name="WZT", age=23)
    s = Person.objects.get(name='xiaoli')
    return HttpResponse(str(s))

写接口

接口使用rest_framework,rest_framework是一套基于DjangoREST 框架,是一个强大灵活的构建 Web API 的工具包。

写接口三步完成:连接数据库、取数据、数据输出

1)连接数据库

在工程目录下的settings.py文件下配置, 需要提前安装好mysql或者mariadb等数据库。

DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysql',
        'USER': 'root',
        'HOST': '127.0.0.1', # localhost
        'PASSWORD': '123', # 密码
        'PORT': 3306,
        # show variables like 'character_set_database';
        # 修改字段字符编码
        # alter table spiders_weibo modify text longtext charset utf8mb4 collate utf8mb4_unicode_ci;
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}

创建一个序列化Serializer类

提供序列化和反序列化的途径,使之可以转化为,某种表现形式如json。我们可以借助serializer来实现,类似于Django表单(form)的运作方式。在app目录下,创建文件serializers.py。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容