2016-08-13 146 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()