2015-02-25 11 views
21

पर एक APIView जोड़ना मैं Django REST Framework के साथ एक आरईएसटी बैकएंड विकसित कर रहा हूं।
हालांकि, मुझे वेब ब्राउज़ करने योग्य API में APIView इंस्टेंस जोड़ने में समस्या हो रही है।Django REST Framework ब्राउज़ करने योग्य API

documentation और previous answer बताता है कि मुझे बस इतना करना है कि एक डॉकस्ट्रिंग जोड़ें।
यह मेरे लिए काम नहीं करता है।

मुझे लगता है कि ब्राउज़ करने योग्य एपीआई केवल व्यूसेट एंडपॉइंट्स राउटर के साथ पंजीकृत है प्रदर्शित करता है।
यदि ऐसा है, तो मैं राउटर में APIView कक्षाओं को कैसे पंजीकृत कर सकता हूं?

router = DefaultRouter(trailing_slash=False) 
router.register(r'tokens', TokenViewSet, base_name='token')  
urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^api/', include(router.urls)), 
    url(r'^api/register$', RegisterUser.as_view(), name='register_user'), 
    url(r'^api/auth$', ObtainAuthToken.as_view(), name='obtain_token'), 
    url(r'^api/me$', ObtainProfile.as_view(), name='obtain_profile'), 
    url(r'^api/recover$', FindUsername.as_view(), name='recover_username'), 
) 

वर्तमान में, केवल टोकन समाप्ति बिंदु दिखाता है:

नीचे मेरे वर्तमान रूटर कोड है।

धन्यवाद।

+0

क्या आप अपने चल रहे DRF3 की पुष्टि कर सकते हैं?/Api/me और/api/पुनर्प्राप्ति एंडपॉइंट्स (जिसे मैं एपीआई व्यू मानता हूं) के लिए नियमित ब्राउज़र अनुरोध (एक स्वीकृति के साथ HTTP: टेक्स्ट/एचटीएमएल) बनाते समय आपको क्या प्रतिक्रिया कोड/निकाय मिलता है? –

उत्तर

1

मुझे विश्वास है कि राउटर.यूआरएल शामिल करने वाली रेखा एपीआई से शुरू होने वाले अन्य यूआरएल 'प्रीempt' कर रही है। बदलने का प्रयास करें

url(r'^api/', include(router.urls)), 

url(r'^tokenapi/', include(router.urls)), 

करने के लिए, अगर ऐसा है तो साथ शामिल url प्रतिमानों की सूची में अंतिम पंक्ति और एपीआई को tokenapi बदलते वापस होने के लिए लाइन ले जाने का प्रयास काम करता है ।

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^api/register$', RegisterUser.as_view(), name='register_user'), 
    url(r'^api/auth$', ObtainAuthToken.as_view(), name='obtain_token'), 
    url(r'^api/me$', ObtainProfile.as_view(), name='obtain_profile'), 
    url(r'^api/recover$', FindUsername.as_view(), name='recover_username'), 
    url(r'^api/', include(router.urls)), 
) 
11

रूटर सामान्य विचारों के लिए डिज़ाइन नहीं किए गए हैं। यदि आप अपने राउटर में यूआरएल पंजीकृत करना चाहते हैं तो आपको व्यूसेट का उपयोग करने की आवश्यकता है।

मेरे यहां एक ही प्रश्न है। शायद आप इसे रेफरी कर सकते हैं: How can I register a single view (not a viewset) on my router?