(Django) templates

Kepler·2020년 4월 8일
0

Django

목록 보기
11/12

Views.py에서의 설정

각각의 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})

template.html

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>    
    
profile
🔰

0개의 댓글