我是django的新手。我正在尝试创建pastebin.com的一个克隆,该克隆只有一个具有名称,内容和generate_url的模型(发布)。
我在搜索栏上遇到了问题。我不知道如何将SearchView实现到生成
这是我的模特
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模板吗?
答案 0 :(得分:0)
您需要检出django-filter包含一个简单的api,以帮助您设置过滤对象以及如何处理复杂的过滤器。
def product_list(request):
f = ProductFilter(request.GET, queryset=Product.objects.all())
return render(request, 'my_app/template.html', {'filter': f})