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+分页组件完成:分类查看+分页

原文地址:https://www.cnblogs.com/qiangayz/p/9142886.html