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'