2015-04-04 77 views
0

我有一個現有的Django應用程序,我想添加一個API。現在我只是試圖建立一個模型的表示。django-rest-framework:如何將URL集成到現有的Django應用程序中?

首先,我只想創建一個端點/api/1.0/county來顯示所有的縣。

我已經在我的Django應用程序的頂層稱爲api創建的文件夾,並在其中我已創建一個urls.py文件,其中包含以下內容:

from django.conf.urls import url, include 
from domes.models import County 
from rest_framework import routers, serializers, viewsets 

class CountySerializer(serializers.HyperlinkedModelSerializer): 
    class Meta: 
     model = County 
     fields = ('id', 'name') 

class CountyViewSet(viewsets.ModelViewSet): 
    queryset = County.objects.all() 
    serializer_class = CountySerializer 

router = routers.DefaultRouter() 
router.register(r'county', CountyViewSet) 

urlpatterns = [ 
    url(r'^', include(router.urls)) 
] 

然後在我的根urls.py我已經添加了以下:

import api 
... 
urlpatterns = (.... 
    (r'^api/1.0', include(api.urls)), 
) 

但是,如果我嘗試在我的瀏覽器中加載/api/1.0/county,我看到Page Not Found,因爲URL不urlpatterns的發現。 Django的似乎知道以下網址模式:

^API/1.0^^ $ [名稱= 'API根']

^api/1.0^^\.(?P<format>[a-z0-9]+)$ [name='api-root'] 
^api/1.0^^county/$ [name='county-list'] 
^api/1.0^^county/\.(?P<format>[a-z0-9]+)$ [name='county-list'] 
^api/1.0^^county/(?P<pk>[^/.]+)/$ [name='county-detail'] 
^api/1.0^^county/(?P<pk>[^/.]+)/\.(?P<format>[a-z0-9]+)$ [name='county-detail'] 

我怎樣才能得到這兩個URL文件很好地一起玩嗎?

如果可能,我寧願將API URL保存在與主應用程序分開的文件中。文檔中的所有示例似乎都假定django-rest-framework將用作獨立應用程序,但我需要將它集成到現有的應用程序中。

回答

0

你缺少一個斜槓:

urlpatterns = (.... 
    (r'^api/1.0', include(api.urls)), 
) 

在末尾添加斜線,否則將只匹配api/1.0county/

+0

我一定建議在這裏添加斜線(在你的答案中),以便來自未來的人更好地理解你的意思。 – 2015-04-05 17:00:23

相關問題