一、技術(shù)準(zhǔn)備:
模板(template)包含寞奸、繼承與 {% block %} 的用法
- {% include %} 標(biāo)簽
在項目的開發(fā)過程中呛谜,有很多頁面的某些內(nèi)容都是一樣的,比如頁面的導(dǎo)航條枪萄,頁腳的部分隐岛,在每個頁面都是一樣的,我們 將相同的代碼瓷翻,抽出來聚凹,使用時用{% include %}標(biāo)簽。 - {% extends "main.html" %} 的意思是繼承 main.html頁面的代碼齐帚,使用繼承方法的話妒牙,這個代碼一定要放頁面的第一行。
- 代碼{% block xxx %}{% endblock %} 里的xxx可以自由命名对妄,這個代碼意思是告訴模板引擎:這個位置我要預(yù)留給別人放東西的湘今。這個部分子模板可以重載,每個{% block%}標(biāo)簽所要做的是告訴模板引擎剪菱,該模板下的這一塊內(nèi)容將有可能被子模板覆蓋摩瞎。
二拴签、具體步驟如下:
第一步:前端技術(shù)加強(qiáng)-html模板應(yīng)用
1、建立navbar.html文件旗们,是導(dǎo)航條
2蚓哩、建立main..html,主頁蚪拦,包括導(dǎo)航和不同的塊杖剪,等子模板覆蓋。
3驰贷、建立home.html盛嘿,繼承主頁,把預(yù)留的塊填寫上自己的內(nèi)容
4括袒、建立room.html文件次兆,同上。
5锹锰、響應(yīng)views.py添加
def home(request):
return render(request, "home.html", context)
def room(request):
return render(request, "room.html")
第二步:通過url中參數(shù)傳遞進(jìn)入不同頁面
總結(jié):從后端通過響應(yīng)往前端頁面?zhèn)鬟f數(shù)據(jù)使用【返回值】 render(,,context)
從前端通過url參數(shù)/<str:pk> —->對應(yīng)的方法的【入?yún)ⅰ?room(request,pk)
1导街、urls.py
path('room/<str:pk>/', views.room,name=‘room')
2、views.py
def room(request,pk):
3踊赠、home.html
{% for room in rooms %}
<h3>{{room.id}} -- <a href="/room/{{room.id}}">{{room.title}}</a></h3>
{% endfor %}
4添瓷、獲取所有的數(shù)據(jù)包括id,并改為Article類(顯示文章)views.py中
rooms = models.Article.objects./all()
5、在返回的 判斷符合 的id后將這個 id的內(nèi)容顯示在頁面中痢士。
def room(request, pk):
room=models.Article.objects.get(id=pk)
context={'room':room}
return render(request, "room.html", context)
6彪薛、room.html
{% extends 'main.html' %}
{% block content %}
@{{room.user}}
<h1>{{room.title}}</h1>
<div>
<h4>{{room.intro}}</h4>
</div>
<h5>{{room.created_time}}</h5>
{% endblock content %}