Django(part16)--URL反向解析

学习笔记,仅供参考,有错必纠


模板


URL反向解析


re_path方法的name关键字


  • 语法
re_path(regex, views, kwargs=None, name = "别名")

  • 通过别名实现地址的反向解析

模板中无参的使用url别名的语法:

{% url '别名' %}

模板中有参的使用url别名的语法:

{% url '别名' '参数值1' '参数值2' %}
//或者
{% url '别名' 变量1 变量2 %}

举个例子

  • 无参数

pages.html

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Yes!</title>
</head>
<body>
	<ul>
		<li><a href="{% url 'page2' %}" >第2个模板</a></li>
		<li><a href="{% url 'page3' %}" >第3个模板</a></li>
	</ul>
	
</body>
</html>

views.py

def pages(request):
    return render(request, "pages.html")

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'page2_template/$', views.page2_template, name = "page2"),
    re_path(r'page3_template/$', views.page3_template, name = "page3"),
    re_path(r'pages/$', views.pages),
]

向http://127.0.0.1:8000/pages/发起请求:

点击"第3个模板":

可以看到,我们成功跳转到路由为page3_template/的页面


  • 有参数

somebody_name.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Yes!</title>
</head>
<body>
    <h1>姓名:{{ name }}</h1>
    <h1><a href="{% url 'info' name%}">跳转到{{ name }}的个人信息页</a></h1>
</body>
</html>

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'somebody/name/(\w+)$', views.somebody_name, name = "name"),
    re_path(r'somebody/info/(\w+)$', views.somebody_info, name = "info"),
]

views.py

def somebody_name(request, name):
    return render(request, "somebody_name.html", locals())

def somebody_info(request, name):
    html = name + "的个人信息"
    return HttpResponse(html)

向http://127.0.0.1:8000/somebody/name/goat发起请求:

点击超链接:

我们跳转到http://127.0.0.1:8000/somebody/info/goat页面

猜你喜欢

转载自blog.csdn.net/m0_37422217/article/details/106821638
今日推荐