DTL语言学习(三){% with %}标签和{% url %}标签的使用

xiaoxiao2025-03-06  10

{% 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>#}

注:

上面两种写法都是可以的,具体使用那一种就看自己的心情了。=两边不能有空格,否者会报错。
转载请注明原文地址: https://www.6miu.com/read-5025637.html

最新回复(0)