| # backend/api/auth_views.py | |
| import django | |
| django.setup() | |
| from django.contrib.auth import authenticate | |
| from django.contrib.auth.models import User | |
| from rest_framework.authtoken.models import Token # ← correct DRF Token | |
| from rest_framework.decorators import api_view, permission_classes | |
| from rest_framework.permissions import AllowAny | |
| from rest_framework.response import Response | |
| def register_view(request): | |
| username = request.data.get("username") | |
| password = request.data.get("password") | |
| if not username or not password: | |
| return Response({"error": "Username and password required"}, status=400) | |
| if User.objects.filter(username=username).exists(): | |
| return Response({"error": "Username already taken"}, status=400) | |
| user = User.objects.create_user(username=username, password=password) | |
| token = Token.objects.create(user=user) | |
| return Response({"token": token.key, "username": user.username}, status=201) | |
| def login_view(request): | |
| username = request.data.get("username") | |
| password = request.data.get("password") | |
| user = authenticate(request, username=username, password=password) | |
| if user is not None: | |
| token, _ = Token.objects.get_or_create(user=user) | |
| return Response({"token": token.key, "username": user.username}) | |
| return Response({"error": "Invalid credentials"}, status=401) | |
| def logout_view(request): | |
| auth_header = request.headers.get("Authorization", "") | |
| if auth_header.startswith("Token "): | |
| key = auth_header[6:] | |
| Token.objects.filter(key=key).delete() | |
| return Response({"status": "logged out"}) | |
Xet Storage Details
- Size:
- 1.73 kB
- Xet hash:
- de73d45dd0f37f10a0f2bab665f6650c07e31e3f9986eb79f21148879eea0d63
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.