【问题标题】:How do i implement my ClassView to my template html for a search behavior?如何将我的 ClassView 实现到我的模板 html 以实现搜索行为?
【发布时间】:2019-03-12 12:45:45
【问题描述】:

我是 django 的超级新手。我正在尝试创建一个 pastebin.com 的克隆,它只有一个模型(帖子),其中包含 name 、 content 和 generated_url。
我的搜索栏有问题。我不知道如何将 SearchView 实现到生成的 search.html 中

这是我的模型

from django.db import models
from django.urls import reverse

# Create your models here.
class Post(models.Model):
    name = models.CharField(db_index=True, max_length=300, blank=False)
    content = models.TextField()
    generated_url = models.CharField(db_index=True, max_length=10, blank=False)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse("pastebin_app:detail",kwargs={'pk':self.pk})

这是我的搜索栏的 root.html

<form action="{% url 'pastebin_app:search' %}" method="get" accept-charset="utf-8">

      <input name="q" type="text" placeholder="Search">

      <input type="submit" value="Search"/>

    </form>

这里是 searchview 的 views.py

class SearchView(ListView):
    template_name = 'pastebin_app/search.html'
    model = models.Post

    def get(self, request, *args, **kwargs):
        q = request.GET.get('q', '')
        self.results = models.Post.objects.filter(name__icontains=q)
        return super().get(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        return super().get_context_data(results=self.results, **kwargs)

有人可以帮我创建从 SearchView 生成搜索结果的 show.html 模板吗?

【问题讨论】:

    标签: django python-3.x django-models django-rest-framework django-templates


    【解决方案1】:

    您需要查看 django-filter 包含一个简单的 api 来帮助您设置过滤对象以及如何处理复杂的过滤器。

    def product_list(request):
        f = ProductFilter(request.GET, queryset=Product.objects.all())
        return render(request, 'my_app/template.html', {'filter': f})
    

    【讨论】:

      猜你喜欢
      • 2023-03-15
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 2021-12-27
      • 2012-08-26
      相关资源
      最近更新 更多