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