2016-10-04 2 views
1

Mit Django 1.9 mit Python 3.5, würde Ich mag eine einfache Suchformular machen:Django - Einfache Suche Form

views.py

from django.views import generic 
from django.shortcuts import render 
from .models import Movie, Genre 

class IndexView(generic.ListView): 
    template_name = 'movies/index.html' 
    page_template = 'movies/all_movies.html' 
    context_object_name = 'all_movies' 
    model = Movie 

    def get_context_data(self, **kwargs): 
     context = super(IndexView, self).get_context_data(**kwargs) 
     context.update({ 
      'all_genres': Genre.objects.all(), 
      'page_title': 'Latest' 
     }) 
     return context 

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

Form

<form method="GET" action="" id="searchform"> 
    <input class="searchfield" id="searchbox" name="q" type="text" value="{{ request.GET.q }}" placeholder="Search..."/> 
</form> 

Aus irgendeinem Grund bekomme ich den Fehler:

name 'request' is not defined

Ich bin mir nicht ganz sicher, was ich falsch mache, jede Hilfe wäre willkommen.

Antwort

1

Dieser Fehler kommt nicht von Ihrer Vorlage, wie Sie scheinen zu denken. Es kommt aus Ihrer Sicht

def get_queryset(self): 
    query = request.GET.get('q') 

Es sollte

query = self.request.GET.get('q') 
+0

Ja sein! das funktioniert perfekt. Vielen Dank! – mari