JavaScript и Django - запускайте время непрерывно, не обновляя страницу

Я разработал Django приложение, где оно будет определять время на основе часового пояса и оно работает правильно, как я могу сделать так, чтобы время бежало постоянно без обновления страницы. У меня даже нет идеи реализовать это на js или ajax. Если кто знает, как можно реализовать код django с помощью js или ajax. P.S. Я только что попробовал написать js для конкретной метки "mytime", которая содержит время, которое должно идти непрерывно без обновления страницы. Заранее спасибо

single.html

views.py

def singleview(request):
        if request.method =='POST':
        
            user = Userbase.objects.all()
            for user in user:
                # form = Userform(instance = user)
                # user = Userbase.objects.get(slug=slug)
                print(user.timezone)
                zone = user.timezone
                print(zone)  
                # fmt = 'DD-MM-YYYY'
                # user_time =  datetime.datetime.now(tz=pytz.timezone(zone)).astimezone(pytz.timezone('Asia/Singapore'))
                # user_time = datetime.datetime.now()
                # user_time =  user_time.astimezone(tz=pytz.timezone(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'  
                elif user.my_date =='MM-DD-YYYY': 
                    fmt = '%m-%d-%Y'  
                elif user.my_date == 'DD-MM-YYY HH-MM':
                    fmt = '%d-%m-%Y %I:%M %p'  
                elif user.my_date == 'MM-DD-YYY HH-MM':
                    fmt = '%m-%d-%Y %I:%M %p'   
                elif user.my_date == 'DD-MM-YYY HH-MM-SS':
                    fmt = '%d-%m-%Y %I:%M:%S %p'
                else:
                    fmt = '%m-%d-%Y %I:%M:%S %p'               
                my_date = user_time.strftime(fmt)
                print(my_date)
                mydate=my_date
                print(mydate)
                # user.save()

                #search
                finder = request.POST['finder']
                userb= Userbase.objects.filter(username__contains=finder)
                print(userb)
                # print(mydate)
                print(finder)
                

                return render(request, 'single.html', {
                    'username':user.username, 'email':user.email, 'format':user.my_date ,'currenttime':my_date,
                     'timezone':user.timezone,'finder':finder, 'userb':userb, 'mydate':mydate
                    })

models.py

TIMEZONES = tuple(zip(pytz.all_timezones, pytz.all_timezones))
CHOICES =(('DD-MM-YYYY','DD-MM-YYYY'),('MM-DD-YYYY','MM-DD-YYYY'),('DD-MM-YYYY HH-MM','DD-MM-YYYY HH-MM'),
('MM-DD-YYYY HH-MM','MM-DD-YYYY HH-MM'), ('DD-MM-YYY HH-MM-SS', 'DD-MM-YYY HH-MM-SS'), ('MM-DD-YYYY HH-MM-SS', 'MM-DD-YYYY HH-MM-SS'))
 
    
class Userbase(models.Model):
    
    username = models.CharField('username', max_length=155)
    slug = models.SlugField(editable=False)
    email = models.EmailField(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')
    timezone = models.CharField(max_length=60, choices=TIMEZONES)
  

    # @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.username
    
    def save(self, *args, **kwargs):
        self.username = self.username.lower()
        self.slug = slugify(self.username)
        super(Userbase, self).save(*args, **kwargs)

urls.py

from django.urls import path
from .views import homeview,singleview

app_name= 'app'

urlpatterns = [
    path('', homeview, name='home'),
    path('<slug:slug>/', homeview, name='home'),
    path('users/search/', singleview, name='single'),
]

API views.py

@api_view(['GET', 'POST'])
def data_list(request, *args, **kwargs):
   
    if request.method == 'GET':
  
            user = Userbase.objects.all()
            serializer = UserSerializer(user, many=True)
            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, slug='username'):
   

    if request.method == 'GET':
        try:
            
            user = Userbase.objects.get(slug=slug)
            print(user.timezone)
             
            
            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'  
            elif user.my_date =='MM-DD-YYYY': 
                fmt = '%m-%d-%Y'  
            elif user.my_date == 'DD-MM-YYY HH-MM':
                fmt = '%d-%m-%Y %I:%M %p'  
            elif user.my_date == 'DD-MM-YYY HH-MM-SS':
                fmt = '%d-%m-%Y %I:%M:%S %p'
            else:
                fmt = '%m-%d-%Y %I:%M:%S %p'   
            
            my_date = user_time.strftime(fmt)
            print(my_date)            
           
           
            ##**dont change the user.slug**
            return Response({'id':user.id, 'username':user.slug, 'email':user.email, 'format':user.my_date ,'currenttime':my_date, 'timezone':user.timezone},
             status=status.HTTP_200_OK)
            
        except Userbase.DoesNotExist:
         return Response(status=status.HTTP_404_NOT_FOUND)

urls.py

from django.urls import path from .views import data_list, data_detail

app_name = 'api'

urlpatterns =[

path('list/', data_list, name='getdata'),

path('<slug:slug>/', data_detail, name='getdata')
]

serialiser.py

from rest_framework import serializers
from django.utils.text import slugify
from rest_framework.fields import ReadOnlyField

from app.models import Userbase

class UserSerializer(serializers.ModelSerializer):
  
    class Meta:
        model = Userbase
        # fields ='__all__'
        # extra_kwargs = {'slug': {'read_only': True}}
        fields = ['id','username', 'email', 'my_date','timezone']
        lookup_field = 'slug'
Вернуться на верх