{% 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>#}
注:
- 上面两种写法都是可以的,具体使用那一种就看自己的心情了。
=
两边不能有空格,否者会报错。