django使用rest快速实现前后端分离登录注册
简介
官方文档链接:https://www.django-rest-framework.org/
Django REST框架是一个功能强大且灵活的工具包,用于构建Web API。
您可能希望使用REST框架的一些原因:
该网站可浏览API是你的开发人员一个巨大的可用性胜利。
身份验证策略包括OAuth1a和OAuth2的程序包。
支持ORM和非ORM数据源的序列化。
可自定义 - 如果您不需要更强大的功能,只需使用常规的基于功能的视图。
丰富的文档和良好的社区支持。
由国际知名公司使用和信任,包括Mozilla,Red Hat,Heroku和Eventbrite。
安装
pip install djangorestframework
django使用的是2.1.8版本
使用
创建模型:
class UserModel(models.Model):
username = models.CharField(max_length=32, unique=True)
password = models.CharField(max_length=256)
def verify_password(self, password):
return self.password == password
序列化:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = UserModel
fields = 'id', 'username', 'password'
视图函数:
class UserAPI(APIView):
def post(self, request):
# query_params=GET
action = request.query_params.get('action')
if action == 'register':
return self.do_register(request)
elif action == 'login':
return self.do_login(request)
def do_register(self, request):
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.error_messages)
def do_login(self, request):
username = request.data.get('username')
password = request.data.get('password')
try:
user = UserModel.objects.get(username=username)
except Exception as e:
return Response({'msg': e})
if not user.verify_password(password):
return Response({'msg': 'password error!'})
token = uuid.uuid4().hex
print(token, uuid.uuid4())
cache.set(token, user.id, timeout=60 * 60)
data = {
'msg': 'login success!',
'status': status.HTTP_200_OK,
'token': token,
}
return Response(data)
url:
app_name = 'app'
urlpatterns = [
path('users/', UserAPI.as_view()),
]

浙公网安备 33010602011771号