Я хочу отразить текущую дату и время в rest API на основе региона пользователя, но у меня не получается.

Я только что попытался получить список даты и времени вместо формата DD-MM-YYYY, но у меня не получилось. Когда я пытаюсь получить один конкретный id, он отражает только время. Я хочу вызвать конкретный id, используя имя пользователя через slug.

views.py

from datetime import date
from django.http import request
from django.http.response import JsonResponse
from django.shortcuts import get_object_or_404
from rest_framework import generics, mixins, serializers
from rest_framework.decorators import api_view
from rest_framework.fields import JSONField
from rest_framework.response import Response
from rest_framework.views import APIView
from app.models import Userbase
import datetime
from .serializers import UserDetailSerializer, UserSerializer
import pytz
from rest_framework import viewsets
from rest_framework import status
from rest_framework.renderers import JSONRenderer


@api_view(['GET', 'POST'])
def data_list(request):
   
    if request.method == 'GET':
        user = Userbase.objects.all() 
        print(user)
        serializer = UserSerializer(user, many=True)
        # json = JSONRenderer().render(serializer.data)
        # print(json)
        return Response(serializer.data)

    elif request.method == 'POST':
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


@api_view(['GET', 'POST'])
def data_detail(request, pk):
    # try:
    #     user = Userbase.objects.get(pk=pk)
    # except Userbase.DoesNotExist:
    #     return Response(status=status.HTTP_404_NOT_FOUND)

    # if request.method == 'GET':
    #     serializer = UserDetailSerializer(user)
    #     return Response(serializer.data)


    if request.method == 'GET':
        try:
 
            user = Userbase.objects.get(pk=pk) --here i want to call based on username
            print(user.timezone)
             
            serializer = UserDetailSerializer(user, data=request.data)
            zone = user.timezone
            print(zone)  
            
            user_time =  datetime.datetime.now(tz=pytz.timezone(zone))
            print(user_time.tzinfo)
                    
            if user.my_date == 'DD-MM-YYYY':
                fmt = '%d-%m-%Y %I:%M %p'  
            else: 
                fmt = '%m-%d-%Y %I:%M %p'  
            my_date = user_time.strftime(fmt)
            print(my_date)            
         
            # serializer = UserDetailSerializer(data=user.my_date)
            # return Response(UserDetailSerializer)
            return JsonResponse(my_date, status=status.HTTP_200_OK, safe=False)

            
        except Userbase.DoesNotExist:
         return Response(status=status.HTTP_404_NOT_FOUND)



      
    else:
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

models.py

from django.db import models
import pytz
from django.db import models
import datetime
from django.shortcuts import reverse
from django.utils import timezone
from datetime import datetime 
from django.conf import settings
from django.utils.text import slugify

TIMEZONES = tuple(zip(pytz.all_timezones, pytz.all_timezones))

CHOICES =(('DD-MM-YYYY','DD-MM-YYYY'),('MM-DD-YYYY','MM-DD-YYYY'),)
 
    
class Userbase(models.Model):

    username = models.SlugField(max_length=120)
    email = models.CharField(max_length=155)
    # is_created = models.BooleanField(default=True)
    # is_active = models.BooleanField(default=True)
    my_date= models.CharField('Date',choices=CHOICES, max_length=60)
    # my_date_time = models.DateTimeField('Date & Time',  default=timezone.now)
    timezone = models.CharField(max_length=60, choices=TIMEZONES, default= 'UTC')

    # @property
    # def publishdate(self):
    #     return self.my_date_time.strftime('%Y/%m')
    
    class meta:
        verbose_name ='Userbase'
        verbose_plural = 'Userbase'
    
    def __str__(self):
        return self.email

    def save(self, *args, **kwargs):
        if not self.username:
            self.username = slugify(self.email)
        super(Userbase, self).save(*args, **kwargs)

serializers.py

from rest_framework import serializers

from app.models import Userbase

class UserSerializer(serializers.ModelSerializer):
    
    class Meta:
        model = Userbase
        fields ='__all__'
        # lookup_field = "id"
        
    
    def create(self, validated_data):
        user = Userbase(
            email=validated_data['email'],
            username=validated_data['username'],
            my_date = validated_data['my_date'],
            timezone = validated_data['timezone']
        )
        user.save()
        return user




class UserDetailSerializer(serializers.ModelSerializer):
    
    class Meta:
        model = Userbase
        fields ='__all__'
        lookup_field = "username"
Вернуться на верх