1

ビューを記述するために、 djangoドキュメントのこのページを参照していました。誰かが私が間違ったことを説明できますか? そして、解決策は何ですか

    self.object_list = self.get_queryset()
  File "/vagrant/projects/kodeworms/course/views.py", line 23, in get_queryset
    self.Course = get_object_or_404(Course, name=self.args[0])
  IndexError: tuple index out of range

私のviews.pyファイル

# Create your views here.
from django.views.generic import ListView, DetailView
from django.shortcuts import get_object_or_404

from .models import Course, Content


class PublishedCourseMixin(object):
    def get_queryset(self):
        queryset = super(PublishedCourseMixin, self).get_queryset()
        return queryset.filter(published_course=True)


class CourseListView(PublishedCourseMixin, ListView):
    model = Course
    template_name = 'course/course_list.html'

class CourseContentListView(ListView):
    model = Content
    template_name = 'course/content_list.html'

    def get_queryset(self):
        self.Course = get_object_or_404(Course, name=self.args[0])
        return Content.objects.filter(course=self.course, published=True)

私の urls.py ファイル

from django.conf.urls import patterns, url

from . import views

urlpatterns = patterns('',
    url(r"^$", views.CourseListView.as_view(), name="list" ),
    url(r"^(?P<slug_topic_name>[\w-]+)/$", views.CourseContentListView.as_view(), name="list"),
)
4

2 に答える 2

5

which is を位置引数に使用しself.args[0]ていますが、ビューにキーワード引数を渡しています。

位置引数self.argsがないため、長さがゼロのタプルであるため、その例外が発生します。

self.kwargs['slug_topic_name']URLにキーワード引数があるため、使用する必要があります。

于 2013-07-28T11:17:03.350 に答える
0

このURLにアクセスする場合

url(r"^$", views.CourseListView.as_view(), name="list" ),

self.args がありません。チェックする必要があります

このURLにアクセスすればうまくいくと思います

url(r"^(?P<slug_topic_name>[\w-]+)/$", views.CourseContentListView.as_view(), name="list"),
于 2013-07-28T11:09:58.280 に答える