1 drf请求全局和局部配置(2星)
1 请求支持三种编码格式,urlencoded,json,formdata
2 如果不配置,默认支持三种
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.JSONParser',
'rest_framework.parsers.FormParser',
'rest_framework.parsers.MultiPartParser'
]
3 全局配置,在项目的配置文件中配置
REST_FRAMEWORK = {
'DEFAULT_PARSER_CLASSES': [
'rest_framework.parsers.FormParser',
]
}
4 局部配置
from rest_framework.parsers import JSONParser
class BookView(ViewSetMixin,ListAPIView,CreateAPIView):
parser_classes = [JSONParser,]
2 基于jwt的认证类
1 重点逻辑authenticate方法中
-取出客户端传入的token(后端自己规定,写道接口文档中过了),请求头中,请求地址。。。
-验证jwt的签名(模块提供了)
-通过payload得到当前登录用户对象(模块提供了)
-return user,token
from rest_framework.exceptions import AuthenticationFailed
from rest_framework_jwt.settings import api_settings
import jwt
jwt_decode_handler = api_settings.JWT_DECODE_HANDLER
jwt_get_username_from_payload = api_settings.JWT_PAYLOAD_GET_USERNAME_HANDLER
from rest_framework_jwt.authentication import BaseJSONWebTokenAuthentication
from django.contrib.auth.models import User
class JWTAuthentication(BaseJSONWebTokenAuthentication):
def authenticate(self, request):
print(request.META)
token=request.META.get('HTTP_AUTHORIZATION',None)
if token:
try:
payload = jwt_decode_handler(token)
<