簡體   English   中英

Django模板不會將值輸出到HTML表格單元格

[英]Django template doesn't output values to HTML table cells

我有以下模板:

 <table>
     <tr>
         <th>Monday</th>
        <th>Tuesday</th>
        <th>Wednesday</th>
        <th>Thursday</th>
        <th>Friday</th>
        <th>Saturday</th>
        <th>Sunday</th>
    </tr>

    {% for row in table %}
    <tr>
        {% for i in week_length %}
        <td>{{row.i}}</td>
        {% endfor %}
    </tr>
    {% endfor %}
</table>

以下觀點:

def calendar(request):
    template_name = 'workoutcal/calendar.html'

    today_date = timezone.now()
    today_year = today_date.year
    today_month = today_date.month
    today_day = today_date.day

    table = maketable(today_date) # Creates something like: [[None, 1, 2, 3, 4, 5, 6],[7, 8, ...],...,[28, 29, 30, 31, None, None, None]]

    template = loader.get_template('workoutcal/calendar.html')

    #Workout.objects.filter("Workouts lie between certain dates")
    context = {
        'workout_list': Workout.objects.filter(date__year = today_year, date__month = today_month, date__day = today_day),
        'table': table, # The calendar
        'week_length': range(7),
    }
    return HttpResponse(template.render(context, request))

當我訪問頁面( localhost:8000/workoutcal )時,除了表頭之外什么都不輸出。 它看起來像這樣:

桌子

檢查對象

我無法弄清楚為什么Django沒有把我的輸出放到單元格中。 我不希望列表元素的輸出為None ,然后只是所有其他元素的元素內容(都是字符串)。 有任何想法嗎?

你正在重復錯誤的事情。 您的日歷是列表清單; 你應該遍歷每一行,然后迭代該行中的每一列。 week_length完全無關緊要。

{% for week in table %}
<tr>
    {% for day in week %}
    <td>{{ week }}</td>
    {% endfor %}
</tr>
{% endfor %}

您沒有正確訪問row對象中的項目。 它們在索引i不在名為i的屬性處。

您可以執行以下操作:

{% for i in row %}
    <td>{{ i }}</td>
{% endfor %}

因為row是您要訪問的元素列表。 這將避免傳遞week_length變量的需要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM