https://blog.csdn.net/q1352483315/article/details/101477527
根據這個自己所學的 再實現一個簡單的交互案例
實現的內容:查找相應圖書中對應的人物信息
第一步:實現顯示圖書表中的數據
在視圖文件中導入:from booktest.models import BookInfo
定義to_book函數,通過模型類操作數據庫中相應的數據:
def to_book(request):
book = BookInfo.objects.all() # 獲得圖書類模型對應的所有記錄
return render(request, 'booktest/book.html', {'books': book})
模板文件的操作如下:
<ul>
{% for book in books %}
<li><a href="/books/{{ book.id }}">{{ book.btitle }}</a></li>
{% endfor %}
</ul>
然後就是添加路由:
url(r'^books$', views.to_book)
效果圖:
第二步: 實現對應圖書中的人物信息的展示:
首先實現的就是如何跳轉,主鍵爲人物的id
號 所以我們點擊的跳轉修改爲:
<a href="/books/{{ book.id }}">{{ book.btitle }}</a>
然後要實現視圖中模型類對數據庫的操作:
def detial(request, bid):
book = BookInfo.objects.get(id=bid)# 根據對應的圖書id號獲得相應的記錄
hero = book.heroinfo_set.all()# 根據對應的圖書查相關圖書中的英雄
return render(request, 'booktest/detial.html',{'book': book, 'hero': hero})
同樣的再定義路由
url(r'^books/(\d+)$', views.detial)
模板文件的處理:
<ul>
{% for i in hero %}
<li>{{ i.hname }} --- {{ i.gender }} --- {{ i.hcomment }}</li>
{% empty %}
空
{% endfor %}
</ul>
效果圖:
重點:
1. 這裏正則中的分組會自動接收bid
中的參數
2. {% empty %}空{% endfor %}
自動處理for循環中如果出現空的情況
3. 對於數據庫之間的處理還需要好好牢記
book = BookInfo.objects.get(id=bid)# 根據對應的圖書id號獲得相應的記錄
hero = book.heroinfo_set.all()# 根據對應的圖書查相關圖書中的英雄
book = BookInfo.objects.all()# 獲得圖書類模型對應的所有記錄