2017-08-29 77 views
0

我正在做一个django项目,一个音乐应用程序。它包含艺术家的名字,专辑标题,流派和图像。当我创建了一个搜索表单,我得到这个error.I正在使用Django版本1.9.1想创建搜索字段,但错误'WSGIRequest'对象没有属性'请求'

view.py

from django.views import generic 
from . models import Album 
from django.views.generic.edit import CreateView , UpdateView ,DeleteView 
from django.core.urlresolvers import reverse_lazy 
from django.shortcuts import render,redirect 
from django.contrib.auth import authenticate,login 
from django.views.generic import View 
from .forms import UserForm 
from django.db.models import Q 

def get_queryset(self): 
    query= self.request.GET.get('q') 
    if query: 
     return Album.objects.filter(Q(album_title__icontains=query)) 
    else: 
     return Album.objects.all() 

form.py

<form class="navbar-form navbar-left" method="GET" action=""> 
    <div class="form-group"> 
     <input type="text" class="form-control" name="q" value='{{ request.GET.q }}'> 
    </div> 
    <button type="submit" class="btn btn-default" >search</button> 
</form> 

url.py

#checking for search 
url(r'^search/$', views.get_queryset, name='search'), 

浏览器中的错误图像:

回答

0

get_queryset不是View类,所以self参数实际上是请求对象。

要纠正你的问题,你可以简单地做:

def get_queryset(request): 
    query= request.GET.get('q') 
    if query: 
     return Album.objects.filter(album_title__icontains=query) 
    else: 
     return Album.objects.all() 

但我建议仔细检查有关viewsclass-based views的文档。

+0

谢谢你......但我希望我的搜索表单以这样的方式工作,当我提供它的album_title信息,那么它显示在第一。因此,我应该需要创建新的窗体或它可以工作在相同的page.please提供给我详细信息。我的项目看起来如下:https://ibb.co/nr83rk,https://ibb.co/kzG1cQ –

相关问题