각각의 function 마지막에 return render()
를 붙여준다.
render 의 첫번째 인자는 request, 두번째 인자는 리턴할 html페이지, 세번째 인자에는 해당 function에서 생성되어, html에 사용될 변수들을 dictionary 형태로 입력한다.
return redirect(request, layout, context={"html페이지에서 사용할 key이름": function에서 생성된 변수})
예제:
def places_view(request):
cities_data = Cities.objects()
city_pos = {
'id': '110101000',
'name': 'Select a city.'
}
countries_data = Countries.objects()
country_pos = {
'id': '1100',
'name': 'All'
}
continents_data = Continents.objects()
continent_pos = {
'id': '10',
'name': 'All'
}
layout = 'placepage.html'
return render(request, layout, context={'cities': cities_data,
'city_pos': city_pos,
'continents': continents_data,
'continent_pos': continent_pos,
'countries': countries_data, '
'country_pos': country_pos})
views.py에서 render할 변수를 사용할 경우, {{ }}
안에 넣어야만 사용할 수 있다.
예제)
# city_pos는 dictionary이므로 dot notation(.)을 사용하여 키를 입력하면, 그 값이 입력된다.
<table>
<tr>
<th>Id</th>
<td colspan="2" class="bigfont" id="city_id">{{ city_pos.id }}</td>
</tr>
'''
city_pos = "bbox":{"coordinates" : [[[ -84.2895601, 33.886823 ], [ -84.5510681, 33.647808 ],
[ -84.5510681, 33.886823 ], [ -84.2895601, 33.647808 ]]] }
'''
<tr>
<th>BBox</th>
<td class="no-border">
<table class="spanned bbox">
<tr>
<th class="span">Top Left</th>
<td>Lng:</td>
# bbox 의 coordinates의 첫번째 list의 첫번째 list의 첫번째 요소를 불러옴
<td contenteditable id="city_bbox_top-left-lng">{{ city_pos.bbox.coordinates.0.0.0 }}</td>
<td>Lat:</td>
<td contenteditable id="city_bbox_top-left-lat">{{ city_pos.bbox.coordinates.0.0.1 }}</td>
</tr>