1. 程式人生 > >[Django資料庫模型]Django遍歷檢視傳遞過來的元組

[Django資料庫模型]Django遍歷檢視傳遞過來的元組

前面我們演示了 Django 如何連線 MySQL 資料庫,並取出一條資料。

但是到了應用場景就沒那麼簡單了。下面我們再來看看這麼一個需求:一個數據表裡有若干個記錄,現在我們要把 title 和 content 這兩個欄位的內容取出,並在模板裡迴圈列印。其實這也很常見,就是一般的列表頁啦。

URLConf 這裡就不再累述了,只把關鍵的部分羅列一下。

1. views.py

def chika(request):
    db = MySQLdb.connect(user='root', db='chika', passwd='', host='localhost')
    cursor = db.cursor()
    cursor.execute('SELECT title, content FROM nowamagic ORDER BY id DESC')
    chika = cursor.fetchall()
    db.close()
    return render_to_response('index.html', {'chika': chika})

2. 模板檔案

{% block article %}
	
	{% for item in chika %}
	<div class="post-single">
		<h2><a href="http://www.nowamagic.net/">{{ item.0 }}</a></h2>
		<div class="post-content">
			<p>{{ item.1 }}</p>
			<p> <a href="http://www.nowamagic.net/" class="more-link">Read more</a></p>
		</div>
		<!--.postMeta--> 
	</div>
	{% endfor %} 
{% endblock %}

你可以在模板把 {{ chika }} 打印出來:

(('chika_title2', 'chika_content2'), ('chika_title', 'chika_content'))

用慣 PHP,你可能會對這樣的資料結構感到陌生。怎麼遍歷這個東西呢?在 Python 中,這個被稱為元組。怎麼遍歷元組呢?只能用 0,1,2…… 這樣子了:

{% for item in mylst %}    
     {{ item.0 }} {{ item.1}} {{ item.2 }}    
{% endfor %}

就這樣,一個列表頁就做好了。當然還應該有分頁,這個會在後面介紹。