[Django資料庫模型]Django遍歷檢視傳遞過來的元組
阿新 • • 發佈:2019-02-12
前面我們演示了 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 %}
就這樣,一個列表頁就做好了。當然還應該有分頁,這個會在後面介紹。