python - 如何在 django 过滤期间添加分页
问题描述
我的网址看起来像这样 '''http://127.0.0.1:8000/menu/?[%27tags%27,%20%271%27]&page=2'''
我想做'http://127.0.0.1:8000/menu/?tags=2&page=2'
谢谢你们..
munu_extras.py
from django import template
from ..models import Menu
register = template.Library()
@register.simple_tag
def my_url(value,field_name,urlencode=None):
url = "{}={}".format(field_name,value )
if urlencode:
querystring = urlencode.split('=')
filtered_querystring = filter(lambda p: p.split('=')[0]!=field_name, querystring)
print(filtered_querystring)
encode_querystring = '='.join(filtered_querystring)
url = '?{}&{}'.format(querystring,url)
return url
在我的 menu.html 中
{% if menus.has_previous %}
<a href="{% my_url 1 'page' request.GET.urlencode %}"><<<</a>
<a href="{% my_url menus.previous_page_number 'page' request.GET.urlencode %}"><<</a>
{% endif %}
{% if menus.has_next %}
<a href="{% my_url menus.next_page_number 'page' request.GET.urlencode %}">>></a>
<a href="{% my_url menus.paginator.num_pages 'page' request.GET.urlencode %}">>>></a>
{% endif %}
解决方案
你需要使用request.GET
. 所以当你输入 url 时 http://127.0.0.1:8000/menu/?tags=2&page=2
。之后的部分?
将导致request.GET
. 假设,如果urls.py
你有一个 url:
path('menu',views.function,name='function')
并且views.py
你有一个函数:
def function(request):
print(request.GET)
return HttpResponse('success')
在打印语句输出中,它将是一个带有键tags
和page
值的字典2
,2
分别是
推荐阅读
- wordpress - Gravity Form Stripe Payments 未提交
- node.js - 如何在没有 shell 访问权限的情况下安装 puppeteer 依赖项?
- sql - SQL:自联接后的列值不一致
- python-3.x - suds-jurko 设置命令中的错误:use_2to3 无效
- google-analytics - ParseDataFeedJSON(GA.Data) 中的错误:代码:403 原因:用户对此配置文件没有足够的权限
- kubernetes - Hangfire:初始化对象的问题
- database - TYPO3 数据库导入
- wix - Blazor 服务器-客户端安装程序 WIX 最佳实践?
- python - 如何在 Python 3.10 的 Match(切换其他语言)案例中使用多个案例
- c# - 如果多个语句中的任何其他语句失败,我如何反转查询影响?