Hi Alvaro,

If I do that (JS and AJAX), do you think my views.py is already correct? *T
= timezone.now()* is important for me in order to get the right data from
sql for the end user.

*Views.py*
from django.utils import timezone

*t = timezone.now()* [this should detect end user's timezone]
dm = t.strftime('%m-%d')
history = history.objects.filter(monthday__exact=dm)
historystory = random.sample(list(history), 1)
args = {'historystory':historystory}
return render(request, "news/home.html", args)

-Mikko

-Mikko

pe 8.2.2019 klo 22.04 Alvaro Chen <jp.cheny...@gmail.com> kirjoitti:

> Set the timezone for the user via a property on the user is the best way.
> Otherwise, JS can detect the user's time zone. Use moment.js (
> https://momentjs.com/timezone/docs/#/using-timezones/guessing-user-timezone/)
> or Intl (
> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat
> ).
>
> In my project, JS sends an AJAX request to Django with timezone when
> anonymous users access the webpage. Save timezone in request.session.
>
> from django.utils import timezone
> ​
> import pytz
> ​
> # Set user's timezone
> tzinfo = pytz.timezone(request.session['timezone']) 
> #request.session['timezone'] = 'America/Los_Angeles'
> timezone.activate(tzinfo)
> timezone.localtime(timezone.now()).isoformat()
> ​
> # Resume default timezone (setting.py # TIME_ZONE)
> timezone.deactivate()
> timezone.localtime(timezone.now()).isoformat()
>
> Hope this helps.
>
> BR,
>
> Alvaro
>
> On Wednesday, February 6, 2019 at 12:25:45 PM UTC-8, Mikko wrote:
>>
>> Hi,
>>
>> Thank you for your help :)
>>
>> -Mikko
>>
>> ke 6.2.2019 klo 18.47 Andréas Kühne <andrea...@hypercode.se> kirjoitti:
>>
>>> Hi Mikko,
>>>
>>> The best way to do this is actually to set the timezone for the user via
>>> a property on the user. The reason for this is that there is no way to
>>> actually get the timezone from the browser (at least not completely
>>> correctly). That being said, if you want to go down that route - try
>>> something like this: https://github.com/adamcharnock/django-tz-detect
>>>
>>> What it does is use javascript to get the timezone (which doesn't always
>>> return the right timezone) and then uses a middleware to set the timezone
>>> for the current user. That way you will get the information in the correct
>>> timezone for the user according to the browser (which might not be correct).
>>>
>>> Regards,
>>>
>>> Andréas
>>>
>>>
>>> Den mån 4 feb. 2019 kl 15:04 skrev Mikko Meronen <mikkovil...@gmail.com
>>> >:
>>>
>>>> Hi,
>>>>
>>>> Thank you for your answer. I tried timezone.now without parentheses,
>>>> but it gave me server error. I have also tried datetime, but I face the
>>>> same issue.
>>>>
>>>> The issue I have:
>>>> I want people to see what happened today in the past. So I created a
>>>> database where is a story or stories what happened in the history on this
>>>> day(date). My view should be able to pick a right story from the database
>>>> based on the users timezone. If Australian visits my webpage at this
>>>> moment, he should be able to see what happened on February 5 in the past
>>>> (it's already February 5 there). However he sees what happened on February
>>>> 4, because it is February 4 here (in Finland or England, not sure what
>>>> timezone I'm using). So I want to make my view to understand the end user's
>>>> local time, so it can pick the right story from the database for the
>>>> webpage visitor.
>>>>
>>>> -Mikko
>>>>
>>>> ma 4. helmik. 2019 klo 10.15 'Amitesh Sahay' via Django users (
>>>> django...@googlegroups.com) kirjoitti:
>>>>
>>>>> Hello Mikko,
>>>>>
>>>>> There are basically two ways which I know . One is the timezone module
>>>>> that you are using another is datetime module. I believe that timezone
>>>>> module is more effective one.
>>>>> But instead of calling timezone.now() , call timezone.now.
>>>>>
>>>>> Or what is the exact issue are you facing?
>>>>>
>>>>> Regards,
>>>>> Amitesh Sahay
>>>>> *91-750 797 8619*
>>>>>
>>>>>
>>>>> On Monday, 4 February, 2019, 12:30:07 AM IST, Mikko Meronen <
>>>>> mikkovil...@gmail.com> wrote:
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> Is there any easy way in Django to catch end user's local time when
>>>>> end user access the webpage?
>>>>>
>>>>> I have read django documentation and tried to google solutions, but I
>>>>> get quite confused. Below you will find my code. In short the code should
>>>>> show a story on my webpage what happened in the past on the current day.
>>>>> However it doesn't take into account the endusers local time, and thus
>>>>> doesn't work properly.
>>>>>
>>>>>
>>>>> *Views.py*
>>>>> from django.utils import timezone
>>>>>
>>>>> t = timezone.now()     *[This should somehow react to endusers local
>>>>> time]*
>>>>> dm = t.strftime('%m-%d')
>>>>> history = history.objects.filter(monthday__exact=dm)
>>>>> historystory = random.sample(list(history), 1)
>>>>> args = {'historystory':historystory}
>>>>> return render(request, "news/home.html", args)
>>>>>
>>>>> *home.html*
>>>>> [in html I have just the basic things to show the content]
>>>>>
>>>>> <div class="card">
>>>>>             <div class="card-body">
>>>>>                 {% for x in historystory %}
>>>>>     <h4 class="card-text"> {{ x.title }} </h4>
>>>>>         <h4 class="card-text"> {{ x.subtitle }} </h4>
>>>>>     <p class="card-text"> {{ x.content }} </p>
>>>>>     {% endfor %}
>>>>>         </div>
>>>>> </div>
>>>>>
>>>>>
>>>>> *Settings.py*
>>>>> LANGUAGE_CODE = 'en-us'
>>>>> TIME_ZONE = 'UTC'
>>>>> USE_I18N = True
>>>>> USE_L10N = True
>>>>> USE_TZ = True
>>>>>
>>>>> You can check my webpage (http://www.topithenewsdoggy.com/) to get
>>>>> better understanding what I'm doing. The part is under Additional info.
>>>>>
>>>>> -Mikko
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Django users" group.
>>>>>
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to django-users...@googlegroups.com.
>>>>> To post to this group, send email to django...@googlegroups.com.
>>>>> Visit this group at https://groups.google.com/group/django-users.
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/django-users/CAGD0jj%2Bh_1Pd50eE0e0zXt8P-yozqCnZeYYXTe6bj6Tt6UopxA%40mail.gmail.com
>>>>> <https://groups.google.com/d/msgid/django-users/CAGD0jj%2Bh_1Pd50eE0e0zXt8P-yozqCnZeYYXTe6bj6Tt6UopxA%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Django users" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to django-users...@googlegroups.com.
>>>>> To post to this group, send email to django...@googlegroups.com.
>>>>> Visit this group at https://groups.google.com/group/django-users.
>>>>> To view this discussion on the web visit
>>>>> https://groups.google.com/d/msgid/django-users/383150814.2310524.1549268121893%40mail.yahoo.com
>>>>> <https://groups.google.com/d/msgid/django-users/383150814.2310524.1549268121893%40mail.yahoo.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Django users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to django-users...@googlegroups.com.
>>>> To post to this group, send email to django...@googlegroups.com.
>>>> Visit this group at https://groups.google.com/group/django-users.
>>>>
>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msgid/django-users/CAGD0jjLXV%2BxwMtjE3BSd8aAiVPuePJXLV%2BKaTQZr%2B-78udz4fQ%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/django-users/CAGD0jjLXV%2BxwMtjE3BSd8aAiVPuePJXLV%2BKaTQZr%2B-78udz4fQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Django users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to django-users...@googlegroups.com.
>>> To post to this group, send email to django...@googlegroups.com.
>>> Visit this group at https://groups.google.com/group/django-users.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/django-users/CAK4qSCdTgLhZvMdVV8BMXFaMZFF%2BK-grqw6id73cR8qV29FxSg%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/django-users/CAK4qSCdTgLhZvMdVV8BMXFaMZFF%2BK-grqw6id73cR8qV29FxSg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/3744fa49-6d1b-4757-b357-8b7e88b0e490%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/3744fa49-6d1b-4757-b357-8b7e88b0e490%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAGD0jjKhkouakeP8D2VU1vwseTEbnA3iASawiT73vUP4eWuDcg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to