0

アクティブなタイムゾーンを設定する 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>
4

0 に答える 0