DTL語言學習(三){% with %}標籤和{% url %}標籤的使用
{% with %}標籤的使用
首先新建一個測試環境。
新建一個專案,然後建立一個with_demo
的app,在app中建立urls.py
的檔案,再建立一個templates的資料夾,在templates中再建立一個with.html
的檔案。
然後將所有的配置都配置好,即新增url
,新增app
至settings.py中等等。
直到能正常訪問到with.html
這個檔案時就配置完成了。
然後就是編寫測試程式碼了:
首先在views中寫入以下程式碼:
from django.shortcuts import render
# Create your views here.
def index(request):
persion = ['張三','李四','王五']
return render(request,'with.html',{'perison':persion})
然後在with.html
中接收傳入的資料,在body中寫入以下程式碼:
<p>{{ perison.0 }}</p>
<p>{{ perison.1 }}</p>
<p>{{ perison.2 }}</p>
檢視效果
接下來我們使用with
標籤進行操作。
with.html
中body中修改程式碼為:
<p>{{ perison.0 }}</p>
<p>{{ perison.1 }}</p>
<p>{{ perison.2 }}</p>
<hr>
{% with per=perison %}
<p>{{ per.0 }}</p>
<p>{{ per.1 }}</p>
<p>{{ per.2 }}</p>
{% endwith %}
效果圖為
這樣我們就是用{% with %}
標籤定義了一個變數。
{% with %}
在html中繼續修改程式碼:
<p>{{ perison.0 }}</p>
<p>{{ perison.1 }}</p>
<p>{{ perison.2 }}</p>
<hr>
{% with per=perison %}
<p>{{ per.0 }}</p>
<p>{{ per.1 }}</p>
<p>{{ per.2 }}</p>
{% endwith %}
<hr>
{% with perison as pers %}
<p>{{ pers.0 }}</p>
<p>{{ pers.1 }}</p>
<p>{{ pers.2 }}</p>
{% endwith %}
這樣,我們也能得到persion
中的值。
注意:
- 使用
xxx=xxx
這種方法時,=
兩邊不能有空格,否則Django會不能識別。 - {% with %}定義的變數只在當前的{% with %}標籤下才有用,在另外的地方將不能識別。
{% url %}標籤的使用
在剛才的專案中繼續新建一個url_demo
的app,在app中建立urls.py
的檔案,再建立一個templates的資料夾,在templates中再建立一個url.html
的檔案。
然後將所有的配置都配置好,即新增url
,新增app
至settings.py中等等。
直到能正常訪問到with.html
這個檔案時就配置完成。
簡單的{% url %}使用
編寫views中的程式碼:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return render(request,'url.html')
def book(request):
return HttpResponse('讀書首頁')
def movie(request):
return HttpResponse('電影首頁')
def city(request):
return HttpResponse('同城首頁')
這個app中urls.py
中的程式碼:
from django.urls import path
from . import views
app_name = 'url'
urlpatterns = [
path('',views.index,name = 'index'),
path('book/',views.book,name = 'book'),
path('movie/',views.movie,name = 'movie'),
path('city/',views.city,name = 'city'),
]
url.html
中body中的程式碼:
<a href="{% url 'url:index' %}">首頁</a><br>
<a href="{% url 'url:book' %}">讀書</a><br>
<a href="{% url 'url:movie' %}">電影</a><br>
<a href="{% url 'url:city' %}">同城</a><br>
這樣,我們就用{% url %}標籤成功的進行了連結。
{% url %}傳遞引數
views中新增一個函式
def book_detail(request,book_id):
text = "最火的一片文章ID是: %s" % book_id
return HttpResponse(text)
urls.py
中新增對映:
path('book/detail/<int:book_id>',views.book_detail,name = 'book_detail')
url.html
中新增一個標籤
<a href="{% url 'url:book_detail' 6 %}">最火的一篇文章</a><br>
這樣,我們就實現了對{% url %}標籤傳入引數的值了。
使用{% url %}標籤傳遞查詢字元竄時,就必須手動的在後面新增。示例程式碼。
views中新增一個login
函式
def login(request):
url = request.GET.get('next')
text = "登入頁面,登入之後你將要跳轉的頁面是: %s" % url
return HttpResponse(text)
urls.py
中配置路徑
path('login/',views.login,name = 'login')
url.html
中新增標籤
<a href="{% url 'url:login' %}?next=city">登入</a>
這樣就能實現{% url %}標籤傳遞查詢字元竄的操作了。
如果需要傳遞多個引數,只需要繼續在後面新增引數就行了,示例:
修改views中的book_detail
函式,接收兩個引數:
def book_detail(request,book_id,category):
text = "最火的一片文章ID是: %s 種類是: %s" % (book_id,category)
return HttpResponse(text)
urls.py
中修改對應路徑增加引數
path('book/detail/<int:book_id>/<category>/',views.book_detail,name = 'book_detail'),
url.html
中修改標籤
<a href="{% url 'url:book_detail' book_id=6 category='小說' %}">最火的一篇文章</a><br>
{#<a href="{% url 'url:book_detail' 6 '小說' %}">最火的一篇文章</a><br>#}
注:
- 上面兩種寫法都是可以的,具體使用那一種就看自己的心情了。
=
兩邊不能有空格,否者會報錯。