Django中路由传值
本教程主要内容为Django中路由传值
一、设置
- 路由设置
path('var/<value_var>')
#注:变量名要放入<>里,并且要与views中的传入的参数要一致
- 可以限制传入的类型
- str - 匹配除了 ‘/’ 之外的非空字符串。如果表达式内不包含转换器,则会默认匹配字符串。
- int - 匹配0或任何正整数。返回一个 int 。
- slug - 匹配任意由 ASCII 字母或数字以及连字符和下划线组成的短标签。比如,building-your-1st-django-site 。
- uuid - 匹配一个格式化的 UUID 。为了防止多个 URL 映射到同一个页面,必须包含破折号并且字符都为小写。比如,075194d3-6885-417e-a8a8-6c931e272f00。返回一个 UUID 实例。
- path - 匹配非空字段,包括路径分隔符 ‘/’ 。它允许你匹配完整的 URL 路径而不是像 str 那样匹配 URL 的一部分。
3.例如
#路由部分
from django.urls import path,include
from . import views
urlpatterns = [
path('article_detail/<int:article_id>', views.article_detail,name='article_detail'),
]
#views部分
from django.http import HttpResponse
def article_detail(request,article_id):
return HttpResponse('文章id:%s'% article_id)
注:path中的article_id与views中的def article_detail(request,article_id)传参要一致
二、在templates中传参到path
1.反向解析
<a href="{% url 'path_name' 路由中的变量 %}">显内容</a>
2.例
#html中的内容
{% for tem in article_ids %}
<h3><a href="{% url 'article_detail' tem.pk %}">{{tem.title}}</a></h3>
{% endfor %}
其中tem.pk是传递的值