在Django中搜索栏?

时间:2019-04-10 20:24:08

标签: python django url-redirection

我有一个引导搜索栏,我希望它搜索数据库中所有标记的列表。 标签就像一个Facebook页面或reddit标签。

提交搜索时,我希望URL包含GET参数:?q="typeword",但是应用程序必须重定向到新页面,并同时保留tags参数。我怎样才能做到这一点?

我尝试使用GET-request和paginator,但是似乎没有任何效果。我可以添加一个新的URL“ search /”,然后它可以工作,但只能使用该URL。

models.py

class Tag(models.Model):
    path = models.CharField(max_length=37,default=0)
    name = models.CharField(max_length=35)
    description = models.CharField(max_length=200)
    image = models.ImageField(default='default.jpg',upload_to='tag_pics')

    def __str__(self):
        return self.path

views.py

def search(request):

    q = request.GET.get('q',None)
    items=''

    if q is None or q is "":
        items = Tag.objects.all()

    elif q is not None:
        items = Tag.objects.filter(name__contains=q)

    paginator = Paginator(items, 3)
    page = request.GET.get('page')
    items = paginator.get_page(page)

    title = "Search"

    return render(request, 'blog/search.html',{'items': items, 'title': title})

search.html

{% extends 'blog/base.html' %}

{% block content %}
  {% if items %}
    <p class="search-count">Found 
      <strong> 
        {{ items.paginator.count }}
      </strong> 
      result{{ items.paginator.count|pluralize }}
    </p>
    {% for i in items %}
      {{ i.path }}
    {% endfor %}
  {% elif request.GET.q %}
    <p class="search-no-results">
      No results for "<strong>{{ request.GET.q }}"
    </p>
  {% endif %}
{% endblock %}

0 个答案:

没有答案