python使用rest_framework写接口文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/antch620/article/details/79897595

rest_framework官方网站:http://www.django-rest-framework.org

1、安装

pip install djangorestframework

pip install markdown

pip install django-filter


2、在settings.py里添加配置

    INSTALLED_APPS += ['rest_framework']

    INSTALLED_APPS += ['rest_framework.authtoken'] //authtoken验证身份是否合法

    INSTALLED_APPS += ['corsheaders']  //解决接口跨域问题

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

]


REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.AllowAny',
    ),
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    )
}

#跨域增加忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = (
    '*'
)

CORS_ALLOW_METHODS = (
    'GET',
    'OPTIONS'
    'POST',
)

CORS_ALLOW_HEADERS = (
     '*'

)


3、在views.py例子

from rest_framework.decorators import api_view, authentication_classes, permission_classes
from rest_framework.response import Response
from rest_framework.authentication import SessionAuthentication, TokenAuthentication

from rest_framework.permissions import IsAuthenticated

@api_view(['GET'])
@authentication_classes((TokenAuthentication,SessionAuthentication))
@permission_classes((IsAuthenticated,))
def index(request):
    result = [request.GET.get('name')]

    return Response(result)


4、解决djangorestframework跨域问题:

pip install django-cors-headers

然后将其添加到已安装的应用程序中:

INSTALLED_APPS  =(
     ... 
    ' corsheaders ',
     ... 
)

还需要添加一个中间件类来收听响应:

MIDDLEWARE  = [   #或MIDDLEWARE_CLASSES on Django <1.10 
    ... 
    ' corsheaders.middleware.CorsMiddleware '' django.middleware.common.CommonMiddleware '... 
]

CorsMiddleware应该放置得尽可能高,特别是在可以产生响应的任何中间件之前, 如Django CommonMiddleware或Whitenoise WhiteNoiseMiddleware。 如果以前没有,则无法将CORS头添加到这些响应中。

如果你使用CORS_REPLACE_HTTPS_REFERER,它应该放在Django之前CsrfViewMiddleware

# 允许所有主机

CORS_ORIGIN_ALLOW_ALL = True
参照: https://github.com/OttoYiu/django-cors-headers

猜你喜欢

转载自blog.csdn.net/antch620/article/details/79897595