django模板传入参数的处理方式与反向生成url
前端模板传入参数的处理方式
1、传入单个参数:
前端使用href="/sel-{{ row.0 }}.html,
url使用url(r'sel-(.+).html',home.index),来正则匹配参数,
view.py使用def index(request,*args,**kwargs):中的*args来接受参数
2、传入关键字参数
前端使用href="/sel-{{ row.0 }}.html,
url使用url(r'sel-(?P<article_type_id>\d+).html',home.index),来正则匹配参数,
view.py使用def index(request,*args,**kwargs):中的**kwargs来接受参数
**kwargs可以直接放在数据库查询语句中查询Article.objects.filter(**kwargs)
3、使用别名反向生成url分为在前端或者后端
后端需要导入模块from django.urls import reverse
url(r'^all/(?<article_type_id>\d+).html$', home.index, name='index'),
在HTML中:{% url "index" article_type_id=1 %} => all/1.html
在views中:reverse('index',kwargs={"article_type_id":1}) =>all/1.html
url(r'^all/(\d+).html$', home.index, name='index'),
在HTML中:{% url "index" 1 %} =>all/1.html
在views中:reverse('index',args=(1,)) =>all/1.html
在模板或者后端没有写要生成的url,比如前端写的是"index" 1 而我需要生成qwerty/1.html这样一个url
那么我只需要在url中写一个模板与别名就可以生成:url(r'^qwerty/(\d+).html$', home.index, name='index'),
4、应用场景:
利用reverse+分页组件完成:分类查看+分页