1. 程式人生 > >DTL語言學習(三){% with %}標籤和{% url %}標籤的使用

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中的值。

注意:

  1. 使用xxx=xxx這種方法時,=兩邊不能有空格,否則Django會不能識別。
  2. {% 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>#}

注:

  1. 上面兩種寫法都是可以的,具體使用那一種就看自己的心情了。
  2. =兩邊不能有空格,否者會報錯。