1

ユーザーがタイムゾーンを変更できるようにしたいと思います。ドキュメントを読んで従いました

ドロップダウンが表示され、別のタイムゾーンを選択して [設定] をクリックできます。すべてが設定されますが、効果はありません。ページのタイムゾーンとしてヨーロッパ/ロンドンが引き続き表示されます。私は何を逃した可能性がありますか?

私のミドルウェア:

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
4

1 に答える 1

0
request.session.session_key

に置き換える必要があります

'django_timezone'
于 2012-08-30T12:00:57.063 に答える