2016-05-16 8 views
0

Ich erstelle eine Film-Web-App, mit Python und Django, und es hat eine Suchfunktion, die mir einen Fehler gibt, den ich nicht wirklich verstehe.'set' Objekt hat kein Attribut 'Sitzung'

ERROR

[16/May/2016 16:22:05] ERROR [django.request:284] Internal Server Error: /movies/search/ 
Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 149, in get_response 
response = self.process_exception_by_middleware(e, request) 
    File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 147, in get_response 
response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "C:\Users\user\git\DjangoServer\movies\views.py", line 157, in search 
set(filteredresolution) 
    File "C:\Users\user\git\DjangoServer\movies\views.py", line 38, in list 
request.session['nextpage'] = reverse('movies:list', kwargs={'page': page}) 
AttributeError: 'set' object has no attribute 'session' 

Filme/views.py Suchfunktion

def search(request, keyword='', resolution='all'): 
    if request.POST: 
     request.session['nextpage'] = reverse('movies:search', kwargs={ 
      'keyword': request.POST.get('keyword'), 
      'resolution': request.POST.get('resolution')}) 
    else: 
     request.session['nextpage'] = reverse('movies:search', kwargs={ 
      'keyword': keyword, 
      'resolution': resolution}) 

    searchresult = [] 
    resolutions = Resolution.objects.all().order_by('name') 

    if request.POST: 
     keyword = request.POST.get('keyword') 
     resolutionid = request.POST.get('resolution') 
    else: 
     keyword = keyword 
     resolutionid = resolution 

    filteredkeyword = [] 
    filteredresolution = [] 
    filteredall = Movie.objects.all() 

    if keyword != '': 
     filteredkeyword = Movie.objects.filter(title_en__icontains=keyword) 
    else: 
     filteredkeyword = filteredall 

    if resolutionid != 'all': 
     storedmovies = StoredMovie.objects.filter(resolution__id=int(resolutionid)) 
     for stored in storedmovies: 
      filteredresolution.append(stored.movie) 
    else: 
     filteredresolution = filteredall 

    searchresult = list(
     set(filteredkeyword) & 
     set(filteredresolution) 
    ) 

    return render(request, 'movies/search.html', { 
     'movies': searchresult, 
     'lang': lang, 
     'countresult': len(searchresult) #ez mire is? 
    }) 

I Art-of verstehen, dass der Fehler ist, wo ich das Segment der 2 Liste zu erstellen, aber es gibt keine Sitzung Dort. ich es aus der Liste Seite aufrufen, die das Folgende:

def list(request, page=1): 
    request.session['nextpage'] = reverse('movies:list', kwargs={'page': page}) 

    lang = request.session.get('language', 'failed') 
    if lang == 'failed' or lang not in supported_langs : 
     return redirect('movies:language') 

    movie_list = Movie.objects.all().order_by('-added') 
    resolutions = Resolution.objects.all().order_by('name') 
    paginator = Paginator(movie_list, 20) # Show 20 contacts per page 

    #page = request.GET.get('page') 
    try: 
     movies = paginator.page(page) 
    except PageNotAnInteger: 
     # If page is not an integer, deliver first page. 
     movies = paginator.page(1) 
    except EmptyPage: 
     # If page is out of range (e.g. 9999), deliver last page of results. 
     movies = paginator.page(paginator.num_pages) 

    return render(request, 'movies/list.html', { 
     'movies': movies, 
     'lang': lang, 
     'resolutions': resolutions, 
     }) 
+0

Wenn Sie 'secresult = list (set (...) & ...)' wollen Sie die eingebaute 'list' Funktion oder Ihre eigene verwenden? –

+0

Ich wollte das eingebaute, mein schlechtes verwenden – MorRich

Antwort

3

Durch eine Ansicht list genannt haben, sind Sie die list eingebauten Shadowing. Benennen Sie Ihre Ansicht um.

Verwandte Themen