关于:url、视图函数、模板3者之间参数传递的理解

url获取参数的途径有2个:

  • 1、url中的变量,设置在URL地址中。
  • 2、url中添加字典,设置在URL地址外。
urlpatterns = [
path('<year>/<int:month>/<slug:day>', views.mydate),
re_path('/dict/(?P<year>[0-9]{4})/$', views.my_dict,{'month':'09'}, name='my_dict'), #year参数设置在URL地址内,month参数设置在URL地址外。
]

视图函数获取参数的途径:

  • 把url传递过来的参数(url地址中的,和url地址外的),全部一起传给视图函数。
def my_dict(request, year, month):    #通过url获取到year,month2个参数。
return render(request, 'mydict.html',{'month':month})

模板获取参数的途径:

  • 通过视图函数return中的render中的context(即上例中的{'month':month}),来获取需要的变量(参数)。
<a href="{% url 'my_dict' 2018 %}">2019年 {{ month }}</a>

总结:

3者之间参数的传递顺序是:url获取到的参数--->传递给视图函数views--->视图函数再render参数给模板文件。

或者反过来说:模板中的变量(参数)来自于视图函数;而视图函数需要的参数,来自于url。

上一篇:MySQL高级 - 日志 - 二进制日志(row及日志删除)


下一篇:Android Studio 4.2.1 的详细安装与卸载过程