2016-11-13 3 views
-2

テーブルを作成するためにビューを使用しようとしました(後でデータを入力したい)。しかし、私はそれぞれのURLを開いた場合、ビューは "名前"コンテキスト 'が定義されていない "エラーを作成します。誰でも説明できますか?名前 'context'が定義されていません

def room_overview(request, year, month): 
    rooms = Room.objects.all() 
    long_month = ['01', '03', '05', '07', '08', '10', '12'] 
    short_month = ['04','06','09','11'] 
    if month in long_month: 
     month_max = 31 
    elif month in short_month: 
     month_max = 30 
    elif year % 4 == 0 and year %100 != 0 or year % 400 == 0: 
     month_max = 29 
    else: 
     month_max = 28 

    days = [] 
    for i in range(1, month_max + 1): 
     days.append(str(i)) 

    context['rooms'] = rooms 
    context['days'] = days 
    context['month'] = month 
    context['year'] = year 

    return render(request, 'hotel/overview.html', context) 

ビューのテンプレートは次のようになります。

<h2>Overview {{month}}/{{year}}:</h2> 
<div class="overview"> 
<table class="table table-condensed"> 
    <tr> 
     {% for day in days %} 
     <th>day</th> 
     {% endfor %} 
    </tr> 

{% for room in rooms %} 
<tr> 
    <td>{{ room.name }}</td> 
    {% for day in days %} 
    <td> 1 </td> 
    {% endfor %} 
</tr> 
{% endfor %} 
</table> 
</div> 

これはURL入力である:

url(r'^room/overview/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$',views.room_overview, name='room_overview'), 
+0

あなたは 'context' dictに直接割り当てます。ここでは最初に' context ['rooms'] = rooms'です。 *しかし、あなたの '文脈' dictはまだ存在しません!最初に作成してください(空)。 – Evert

+0

エラーメッセージは、エラーが発生した行にかなり直接指摘する必要があります。それは死んでいたはずです。 – Evert

+0

私は空のコンテキストdictを最初に作成しなかった同じアプリで他にもたくさんのビューを持っており、エラーは一切発生しませんでした。しかし、それは働きました。 –

答えて

0

あなたは、キー/値のペアを追加する前に、まず自分のコンテキスト変数を定義する必要があります。

あなたはこれを行うことができます:

context = {} 
context['rooms'] = rooms 
context['days'] = days 
context['month'] = month 
context['year'] = year 

か、私は個人的に好む方法:

context = { 
    'rooms': rooms, 
    'days': days, 
    'month': month, 
    'year': year, 
} 

を、これはあなたのエラーを解決します。

関連する問題