提交 1ce1f196 编写于 作者: Y yuenblue

querydict

上级 fa3b5b27
......@@ -10,12 +10,15 @@ class ArticleIndexForm(forms.Form):
label="所属栏目",help_text="请选择栏目",required=False,widget=ToppingSelect(attrs={'class':'form-select'}),empty_label="所有栏目")
status = forms.ChoiceField(choices=ArticleSummary.Status.choices,widget=forms.Select(attrs={'class':'form-select'}))
keywords=forms.CharField(max_length=25,required=False,widget=forms.TextInput(attrs={'class':'form-control','placeholder':'请输入搜索关键字'}))
order = forms.CharField(max_length=25,required=False)
# page = forms.IntegerField()
def search(self)->Paginator:
qa=ArticleSummary.objects.all()
catid= 0 if 'catid' not in self.cleaned_data or self.cleaned_data['catid'] is None else self.cleaned_data['catid'].pk
status=int(self.cleaned_data['status'])
keywords= str(self.cleaned_data['keywords']).strip() or None
qa=qa.order_by(self.cleaned_data['order'])
if catid>0:
preid=f",{catid},"
qa=qa.filter(category__preid__contains=preid)
......
......@@ -67,7 +67,8 @@
{% block content_pages %}
{% if page_range %}
{% for number in page_range %}
<li class="page-item {% if page == number %}active{% endif %}"><a class="page-link" href="#">{{number}}</a></li>
<li class="page-item {% if page == number %}active{% endif %}"><a class="page-link" {% if number != "…" %}href="{{page_url}}&page={{number}}"{% endif %}>{{number}}</a></li>
{% endfor %}
{% endif %}
......
......@@ -6,9 +6,19 @@ import django
django.setup()
from django.core.paginator import Paginator,Page
from django.utils.html import escape,format_html,strip_tags
from django.http import QueryDict
class TestUtils(unittest.TestCase):
"""docstring for TestUtils."""
def test_querydict(self):
query=QueryDict(mutable=True)
query.update({'aa':'bbbb',"bb":2222,"cc":"aaa 啊啊啊"})
# query['aa']='bb'
# query['bbb']=222
# del query['aa']
query.pop('aa')
print(query.urlencode())
def test_page(self):
p=Paginator(range(100),3)
# aa=p.get_elided_page_range(10,on_each_side=3, on_ends=2)
......
......@@ -3,19 +3,27 @@ from django.shortcuts import render
from django.views import View
from django.core.paginator import Paginator
from ..forms.article import ArticleIndexForm
from django.urls import reverse
from django.http import QueryDict
class ArticleIndexView(View):
def get(self, request: HttpRequest,catid=0,status=0):
def get(self, request: HttpRequest,catid=0,status=0,order='-id'):
page=int(request.GET.get('page',1))
catid=request.GET.get('catid',catid)
status=request.GET.get('status',status)
keywords=request.GET.get('keywords','')
data={"catid":catid,"status":status,'keywords':keywords,'page':page}
order=request.GET.get('order',order)
data={"catid":catid,"status":status,'keywords':keywords,'page':page,'order':order}
form = ArticleIndexForm(data)
if form.is_valid():
paginator=form.search()
page_obj=paginator.get_page(page)
page_range=paginator.get_elided_page_range(page)
return render(request,'adm/article-index.html',{'form':form,"page_obj":page_obj,"page_range":page_range,'page':page})
query=QueryDict(mutable=True)
query.update(data)
query.pop('page')
query_url=query.urlencode()
page_url=f"{reverse('adm:article-index')}?{query_url}"
return render(request,'adm/article-index.html',{'form':form,"page_obj":page_obj,"page_range":page_range,'page':page,'page_url':page_url})
return render(request,'adm/article-index.html',{'form':form,})
def post(self,request: HttpRequest,id=0):
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册