搭建django的rest服务框架

不使用django的代码生成机制,自定义rest服务并注册

1、新建一个django项目

django-admin startproject aidemo .

2、生成一套新的app

python manage.py startapp aivisit

3、引入django_rest

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

4、注册url

from aivisit.views import TestView

urlpatterns = [
    path('api/test', TestView.as_view(), name='test'),
]

5、view代码

from django.shortcuts import render
from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.views import APIView

# Create your views here.
# @action(methods=['get'], detail=False, url_name='test')
class TestView(APIView):
    def get(self, request, *args, **kwargs):
        data = {
            'id': '001',
            'username': 'zhangsan',
        }
        return Response(data)

6、增加文档说明

setting.py

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': [
        'utils.response.FitJSONRenderer',
        'rest_framework.renderers.BrowsableAPIRenderer'
    ],
    'DEFAULT_FILTER_BACKENDS': [
        'django_filters.rest_framework.DjangoFilterBackend',
        'rest_framework.filters.SearchFilter',
        'rest_framework.filters.OrderingFilter'
    ],
    'DEFAULT_PAGINATION_CLASS': 'utils.pagination.MyPagination',
    'DATETIME_FORMAT': '%Y-%m-%d %H:%M:%S',
    'DATE_FORMAT': '%Y-%m-%d',
    'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
}

urls.py

urlpatterns = [
    path('api/test', TestView.as_view(), name='test'),
    # api文档
    path('api/docs/', include_docs_urls(title="接口文档", authentication_classes=[], permission_classes=[])),
]

7、部署

pip install django=3.2.19   #太高了要求数据库mysql版本在MySQL 8 以上
pip install djangorestframework
pip install coreapi

python3 manage.py runserver 0.0.0.0:5010 

找到 ALLOWED_HOSTS = [] 修改为ALLOWED_HOSTS = ['*']

8、安装部署nginx

yum install nginx
systemctl start nginx

9、测试

http://xxx:6010/api/test    #django
http://xxx:6019/images/     #nginx

10、连接mysql的问题

pip install pymysql

在项目同级目录的__init__文件中添加配置

import pymysql
pymysql.version_info=(1,4,3,"final",0) # 指定了pymysql的版本:1.4.3,按照你版本修改
pymysql.install_as_MySQLdb()

11、解决跨域问题

pip install django-cors-headers

在setting.py中增加

CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_HEADERS = ('*')
CORS_ALLOW_CREDENTIALS = True


INSTALLED_APPS = (
    ...
    'corsheaders'
)

MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware',
    ...
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值