[Django] Auth django app with rest api
2023-09-14 09:00:51 时间
First, start the env:
. bin/activate
Then cd to our module
cd djangular
Create a new app:
python manage.py startapp auth_api
Create a api.py inside auth_api folder:
from django.contrib.auth import authenticate, login, logout from rest_framework import status, views from rest_framework.response import Response from django.views.decorators.csrf import csrf_protect from django.utils.decorators import method_decorator from .serializers import UserSerializer # views.APIView -- rest api call class LoginView(views.APIView): @method_decorator(csrf_protect) def post(self, request): user = authenticate( username=request.data.get("username"), password=request.data.get("password") ) if user is None or not user.is_active: return Response({ 'status': 'Unauthorized', 'message': 'Username or password incorrect' }, status=status.HTTP_401_UNAUTHORIZED) login(request, user) return Response(UserSerializer(user).data) # convert python object to json using serializer and send back to client class LogoutView(views.APIView): def get(self, request): logout(request) return Response({}, status=status.HTTP_204_NO_CONTENT)
auth_api/serialilzer.py
from django.contrib.auth.models import User from rest_framework import serializers class UserSerializer(serializers.ModelSerializer): class Meta: model = User fields = ('id', 'username')
auth_api/urls.py:
from django.conf.urls import url from .api import LoginView, LogoutView urlpatterns = [ url(r'^login/$', LoginView.as_view()), # because LoginView is class not a method, we need to call as_view() method url(r'^logout/$', LogoutView.as_view()), ]
top leavel settings.py:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'scrurumboard', 'tictactoe', 'auth_api' # add app here ]
top leavel urls.py:
from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^scrumboard/', include('scrurumboard.urls')), url(r'^auth_api/', include('auth_api.urls')), # add url here ]
If visit the localhost:8000/auth_api/login, should see the interface.
相关文章
- Django 报错 admin.E408 admin.E409 admin.E410
- Django详解之models操作
- Django之ORM
- 第三百七十五节,Django+Xadmin打造上线标准的在线教育平台—创建课程机构app,在models.py文件生成3张表,城市表、课程机构表、讲师表
- 第三百七十三节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
- 第三百零四节,Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器
- 【转】django的ORM操作数据库样例
- Python的Django REST框架中的序列化及请求和返回
- python-django框架-电商项目-购物车模块开发_20191125
- django迁移:全局、局部
- [Django] Creating an app, models and database
- Django 3.2.5博客开发教程:创建数据库模型
- Django 3.2.5博客开发教程:基础配置
- Python Django 日期增减API
- Python Django 可变参数代码示例
- Python Django 查询数据缓存
- 【1】按照Django官网,编写一个web app 创建project/配置数据库
- Django学习15 -- 验证码
- 在Django中批量传入数据