2016-08-13 142 views
0

試圖將2個模型合併到我的「季節」視圖/模板上我的Django站點上。目前,我將以下內容視爲ValueError「視圖webapp.views.season沒有返回HttpResponse對象,而是返回None。」不知道我在做什麼錯,但希望有人可以看看。Django中單個視圖/模板上的多個模型

views.py

from django.shortcuts import render, get_object_or_404, redirect 
from django.views.generic import ListView 
from .models import Player, Season 

def home(request): 
    seasons = Season.objects.order_by('sid') 
    return render(request, 'webapp/home.html', {'seasons': seasons}) 

def player(request, pk): 
    player = get_object_or_404(Player, pk=pk) 
    return render(request, 'webapp/player.html', {'player': player}) 

def season(ListView, pk): 
    model = Season 
    template_name = 'webapp/season.html' 

    def get_context_data(self, **kwargs): 
     context = super(season, self).get_context_data(**kwargs) 
     context['players'] = Player.objects.all() 
     return context 

def seasons(request): 
    seasons = Season.objects.order_by('sid') 
    return render(request, 'webapp/seasons.html', {'seasons': seasons}) 

urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.home, name='home'), 
    url(r'^player/(?P<pk>\d+)/$', views.player, name='player'), 
    url(r'^season/(?P<pk>\d+)/$', views.season, name='season'), 
    url(r'^seasons/$', views.seasons, name='seasons'), 
] 

應當指出的是,我本來有一個類型錯誤,上面寫着 「季節()得到了一個意想不到的關鍵字參數 'PK'」 前我將pk添加到了季節的參數中。任何幫助是極大的讚賞!謝謝!

回答

1

意見:home,playerseasons都是Function Based Views,這是舊的Django Views風格。另一方面,ListView是一個Class Based View,這是一種在Django中編寫視圖的新方法。你在混合這兩種觀點,這是一個壞主意。不知道您的看法season應該做的,但你可以試試:

def season(request, pk): 
    season = get_object_or_404(Season, pk=pk) 
    return render(
     request, 
     'webapp/season.html', 
     {'season': season, 'players': Player.objects.all()} 
    ) 
+0

所以這得到它的階級基礎觀點頁面,但顯示每個季節,而不僅僅是他們所附的季節。我如何限制它只是球員所屬的賽季?目前,我有第三個模型,它具有Player和Season模型的外鍵。我認爲我需要將它們連接起來,但不知道如何編碼。 – SepticReVo

0

在URL中,你需要調用一樣,views.season.as_view()