Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Django REST Framework Make the REST Framework Work for You Create a Viewset and Router

Vijay Sehgal
Vijay Sehgal
2,627 Points

include(router.urls, namespace='api_router') - throwing error cannot import api_router. Whereas its just a namespace

Does anyone know where did I go wrong?

myproject/urls.py
from django.conf.urls import url, include
from django.contrib import admin

from rest_framework import routers

from scorekeeper import views

router = routers.SimpleRouter()
router.register(r'players', views.PlayerViewSet)

urlpatterns = [
    url(r'^api/v1/', include('scorekeeper.urls', namespace='scorekeeper')),
    url(r'^api/v2/', include(router.urls, namespace='api_router')),
]
scorekeeper/views.py
from rest_framework import generics
from rest_framework import viewsets

from . import models
from . import serializers


class GameListCreate(generics.ListCreateAPIView):
    queryset = models.Game.objects.all()
    serializer_class = serializers.GameSerializer


class GameScoresList(generics.ListAPIView):
    queryset = models.Score.objects.all()
    serializer_class = serializers.ScoreSerializer

    def get_queryset(self):
        return self.queryset.filter(
            game_id=self.kwargs.get('game_pk')
        )


class PlayerViewSet(viewsets.ModelViewSet):
    queryset = models.Player.objects.all()
    serializer_class = serializers.PlayerSerializer

1 Answer

Josh Keenan
Josh Keenan
20,315 Points

Assuming you no longer care but as the only question for this challenge I'll explain for anyone else stuck.

You MUST name it api_router, this has been my issue for 20 minutes now and I have been braindead but you know treehouse provide no meaningful error feedback. I hope this helps someone one day