Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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
19,528 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