我们先说一下如何用 Python 代码获取对应的网址(可以用在 views.py,models.py等各种需要转换得到网址的地方):
我们在终端上输入(推荐安装 bpython, 这样Django会用 bpython的 shell)
1
|
python manage.py shell
|
1
2
3
4
5
6
7
8
|
>>>
from
django.core.urlresolvers
import
reverse
# django 1.4.x - django 1.10.x
或者
>>>
from
django.urls
import
reverse
# Django 1.10.x - Django 2.x 新的,更加规范了
>>> reverse(
'add2'
, args
=
(
4
,
5
))
u
'/add/4/5/'
>>> reverse(
'add2'
, args
=
(
444
,
555
))
u
'/add/444/555/'
|
reverse 接收 url 中的 name 作为第一个参数,我们在代码中就可以通过 reverse() 来获取对应的网址(这个网址可以用来跳转,也可以用来计算相关页面的地址),只要对应的 url 的name不改,就不用改代码中的网址。
在网页模板中也是一样,可以很方便的使用。
1
2
3
4
5
6
7
|
不带参数的:
{% url 'name' %}
带参数的:参数可以是变量名
{% url 'name' 参数 %}
例如:
<
a
href
=
"{% url 'add2' 4 5 %}"
>link</
a
>
|
上面的代码渲染成最终的页面是
1
|
<
a
href
=
"/add/4/5/"
>link</
a
>
|
这样就可以通过 {% url 'add2' 4 5 %} 获取到对应的网址 /add/4/5/