アクティブなタイムゾーンを設定する Django doco に示されている例を利用しました: https://docs.djangoproject.com/en/1.8/topics/i18n/timezones/#selecting-the-current-time-zone .
問題は、そこに表示されているテンプレートが [選択] ボックスに何も表示されないことです。他のすべては問題ないようです。
これが私のバージョンです:
{% load tz %}
{% get_current_timezone as TIME_ZONE %}
<form action="{% url 'set_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>
それはすべて正常にレンダリングされますが、選択ボックスは空です-誰かがそれを説明できますか?
コメントに応じて編集
私のビューコードは次のようになります:
django.shortcuts インポート リダイレクトから、レンダリング
def set_timezone(request):
if request.method == 'POST':
request.session['django_timezone'] = request.POST['timezone']
return redirect('/')
else:
return render(request, 'template.html', {'timezones': pytz.common_timezones})
pytzがインストールされていることが確認できました。pip freeze
含まれるもの:
pytz==2015.4
「どこでタイムゾーンを定義しましたか?」に関して それが私の質問のようなものです。ドコのコードが「タイムゾーン」がそこにあることを示唆している理由がわかりません。それが副作用なのだろうかと思いましたが、{% load tz %}
そうでなければ...はい、それが私の質問の要点です。
コメントに応じて編集
@Anentropic: endfor が欠落しているとあなたが言うとき、それは Django doco にある私のコードではありません。endfor が欠落している可能性がありますが、ある場合は endfor がどこにあるべきかわかりません。
記録として、私が使用している実際のテンプレート コードを次に示します (これは、その Django コードからカット アンド ペーストしたものです)。
<!-- The set TZ form -->
{% load tz %}
{% get_current_timezone as TIME_ZONE %}
<form action="{% url 'set_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>