ユーザーがタイムゾーンを変更できるようにしたいと思います。ドキュメントを読んで従いました
ドロップダウンが表示され、別のタイムゾーンを選択して [設定] をクリックできます。すべてが設定されますが、効果はありません。ページのタイムゾーンとしてヨーロッパ/ロンドンが引き続き表示されます。私は何を逃した可能性がありますか?
私のミドルウェア:
from django.utils import timezone
class TimezoneMiddleware(object):
def process_request(self, request):
tz = request.session.get('django_timezone')
if tz:
timezone.activate(tz)
URL:
(r'^timezone/', set_timezone),
(r'^$', main_page_view),
意見:
def set_timezone(request):
if request.method == 'POST':
request.session[request.session.session_key] = pytz.timezone(request.POST['timezone'])
return redirect(request.path)
else:
return redirect('/') #Thats quite annoying that I have to redirect it afterwards, how can I stay on the same page?
def main_page_view(request):
...
variables = {'timezones': pytz.common_timezones}
return render(request, 'main_page.html', variables)
base.html
{% load tz %}{% load url from future %}
<form action="/timezone/" method="POST">
{% csrf_token %}
<label for="timezone">Time zone:</label>
<select name="timezone">
{% for tz in timezones %}
<option value="{{ tz }}"{% if tz == TIME_ZONE %} selected="selected"{% endif %}>{{ tz }}</option>
{% endfor %}
</select>
<input type="submit" value="Set" />
</form>
Main_page.html
{% load tz %}
{% get_current_timezone as TIME_ZONE %}
{{TIME_ZONE}}
設定:
TIME_ZONE = 'Europe/London'
USE_TZ = True