Reputation: 45
Trying to incorporate 2 models into my "season" view/template on my django site. Currently, I get the following as a ValueError "The view webapp.views.season didn't return an HttpResponse object. It returned None instead." Not sure what I am doing wrong, but hoping someone can take a look.
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'),
]
It should be noted that I originally had a TypeError that said "season() got an unexpected keyword argument 'pk'" before I added the pk to the season argument. Any help is greatly appreciated! Thanks!
Upvotes: 0
Views: 1044
Reputation: 228
In the url you need to call the class based view like, views.season.as_view()
Upvotes: 0
Reputation: 3329
The views:home
, player
and seasons
are Function Based Views, this is the old Django Views style. On the other hand, ListView
is a Class Based View, a newer way to write views in Django. You are mixing both kind of views and that's a bad idea. No idea what your season
view should do, but try something like:
def season(request, pk):
season = get_object_or_404(Season, pk=pk)
return render(
request,
'webapp/season.html',
{'season': season, 'players': Player.objects.all()}
)
Upvotes: 1