2016-01-27 53 views
0

我的網站搜索不能從tags_list.html工作。我認爲這與分頁設置有關。但我無法指出它。如果我從我的tags_list.html運行搜索。我沒有得到任何結果。但是,如果我從網站索引做到這一點,它工作正常。繼承我的代碼。我的Django應用程序搜索功能不能從標籤頁面工作

我的標籤代碼 views.py:

def tag_list(request, slug=None): 
instance = get_object_or_404(Tag, slug=slug) 
ins = instance.post_set.all() 

query = request.GET.get("q") 
if query: 
    ins = ins.filter(
      Q(title__icontains=query) | 
      Q(content__icontains=query) | 
      Q(user__first_name__icontains=query) | 
      Q(user__last_name__icontains=query) 
    ).distinct() 
paginator = Paginator(ins, 1) 
page_request_var = "tags" 
page = request.GET.get(page_request_var) 
try: 
    queryset = paginator.page(page) 
except PageNotAnInteger: 
    queryset = paginator.page(1) 
except EmptyPage: 
    queryset = paginator.page(paginator.num_pages) 
context = { 
    "queryset": queryset, 
    "paginator": paginator, 
    "page_request_var": page_request_var, 
} 
return render(request, "posts/tag_list.html", context) 

分頁:

<div class="text-center" style="margin-bottom: 20px"> 

<ul class="pagination"> 
{% if queryset.has_previous %} 
    <li><a href="?tags=1"><<</a></li> 

    <li><a href="?{{ page_request_var }}={{ queryset.previous_page_number }} 
    {% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">prev</a></li> 
{% endif %} 


{% for i in paginator.page_range %} 

<li {% if page_obj.number == i %} class="active" {% endif %}><a href="?tags={{i}}">{{i}}</a><li> 

{% endfor %} 


{% if queryset.has_next %} 
    <li><a href="?{{ page_request_var }}={{ queryset.next_page_number }} 
    {% if request.GET.q %}&q={{ request.GET.q }}{% endif %}">next</a></li> 

    <li><a href="?tags={{ queryset.paginator.num_pages }}">>></a></li> 
{% endif %} 
</ul> 

urls.py

url(r'^tag/(?P<slug>[\w-]+)/$', tag_list, name="tag_index"), 

和它的外觀在url

http://localhost:8000/posts/tag/third-slug/?q=tesla 

任何幫助我如何在語法上可以糾正這是值得歡迎的。謝謝

+0

請正確縮進您的代碼... – Oz123

回答

0

我想通了。一切都是我更改爲查詢設置和它的工作

def tag_list(request, slug=None): 
    instance = get_object_or_404(Tag, slug=slug) 
    ins = instance.post_set.all() 
    queryset_list = Post.objects.active() 
    query = request.GET.get("q") 
    if query: 
     queryset_list = queryset_list.filter(
       Q(title__icontains=query) | 
       Q(content__icontains=query) | 
       Q(user__first_name__icontains=query) | 
       Q(user__last_name__icontains=query) 
    ).distinct() 
    paginator = Paginator(queryset_list, 1) 
    page_request_var = "tags" 
    page = request.GET.get(page_request_var) 
    try: 
     queryset = paginator.page(page) 
    except PageNotAnInteger: 
     queryset = paginator.page(1) 
    except EmptyPage: 
     queryset = paginator.page(paginator.num_pages) 
    context = { 
     "queryset": queryset, 
     "paginator": paginator, 
     "page_request_var": page_request_var, 
    } 
    return render(request, "posts/tag_list.html", context) 
相關問題