1

運が悪かったので、Djangoサイトのタイムゾーンのドキュメントに従いました。私の問題は、pytzによって提供される一般的なタイムゾーンを入力する必要がある選択ボックスがテンプレートにあることですが、何らかの理由で空になっています。

私の最終目標は、ユーザーが自分のタイムゾーンを選択できるようにすることです。

よろしくお願いします。

view.py:

def set_timezone(request):
    if request.method == 'POST':
        request.session['django_timezone'] = pytz.timezone(request.POST['timezone'])
        return redirect('/')
    else:
        return render(request, 'n2w/leads.html', {'timezones': pytz.common_timezones})

Leads.html:

            {% load tz %}
            {{ datetime }}
            <form action="" 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>

settings.py:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.timezone.TimeZoneMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
        )

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    #'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.admindocs',
    'registration',
    'django.contrib.humanize',
    'n2w',
    'n2api',
    'dajaxice',
    'pytz',
)

ミドルウェアクラス(timezone.py):

from django.utils import timezone

class TimeZoneMiddleware(object):
    def process_request(self, request):
        tz = request.session.get('django_timezone')
        if tz:
            timezone.activate(tz)
4

2 に答える 2

0

おそらくNameErrorか何かを上げていると思います。pytzをインポートしてみてください:

pytzからimportcommon_timezones

..。

..。

return render(request、'n2w / Leads.html'、{'timezones':common_timezones})

于 2012-09-05T19:52:59.070 に答える
0

Pythonのインストールを2.7.1->2.7.3からアップグレードした後、pytzを問題なくインポートすることができました。ご協力ありがとうございます!

于 2012-09-06T15:03:26.303 に答える