2016-08-05 48 views
1

Aus meiner urls.py:Warum bekomme ich einen Fehler "kein Modul namens URLs" für Django Rest Framework Swagger?

urlpatterns = [ 
    ..., 
    url(r'^docs/', include('rest_framework_swagger.urls')), 
] 

ich vor kurzem installiert django_rest_swagger, und es ist in der INSTALLED_APPS in settings.py enthalten. Allerdings, wenn ich den Server versuchen laufe, bekomme ich ein ImportError:

File "/home/myname/myapp/api/urls.py", line 11, in <module> 
    url(r'^docs/', include('rest_framework_swagger.urls')), 
    File "/usr/local/lib/python2.7/dist-packages/django/conf/urls/__init__.py", line 52, \ 
in include 
urlconf_module = import_module(urlconf_module) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
__import__(name) 
ImportError: No module named urls 

ich ein benutzerdefiniertes Benutzerauthentifizierungsmodell und Token-Authentifizierung verwenden, der dies kann oder auch nicht zu beeinträchtigen (ich habe es nicht gelungen, die durchsuchbar zu verwenden API auch).

class UserProfile(AbstractUser): 
    gender = models.CharField(max_length=1,default='') 
    description = models.TextField(blank=True,default='') 

Außerdem, wenn ich versuchte, eine Schema-Ansicht Implementierung, bekam ich diesen separaten Fehler:

views.py:

@api_view() 
@renderer_classes([SwaggerUIRenderer, OpenAPIRenderer]) 
def schema_view(request): 
    generator = schemas.SchemaGenerator(title='Test API') 
    return Response(generator.get_schema(request=request)) 

urls.py:

urlpatterns = [ ..., url (r'schema-view /‘, schema_view), ..., ]

AttributeError at /schema-view/ 

'ObtainAuthToken' object has no attribute 'get_serializer_class' 

Dieser Code Ich kopiere/aus einem Tutorial eingefügt, aber es macht nicht Sinn, warum es nicht funktioniert, aber es scheint im Zusammenhang mit der Tatsache, dass get_serializer_class() ist nicht explizit für eine Sichtklasse, die nur erbt von APIView, was der Fall der Klasse ObtainAuthToken ist. Ich habe große Schwierigkeiten beim Verfolgen von Klassenmethoden aufgrund der Verwendung von Metaklassen im Rest-Framework, daher kann ich mir nicht sicher sein.

Mein Endziel ist es, Dokumentation für eine API, die ich programmiere, zu bekommen, aber jeder einzelne Versuch scheint ein anderes Thema auf mich zu werfen. Gibt es hier etwas, was ich falsch mache?

Antwort

2

Dieses Problem ist wegen der Django-Rest-Swagger-Version. Versuchen Sie, die Version swagger 0.3.5 mit pip install django-rest-swagger === 0.3.5 mit django 1.9 zu installieren. Wenn Sie Version django ist 1.10, und folgen Sie den folgenden Link, um das Problem https://github.com/marcgibbons/django-rest-swagger/issues/452

0

für Django> 1.10 Projekt zu lösen urls.py

from rest_framework_swagger.views import get_swagger_view 
schema_view = get_swagger_view(title='API name') 
from django.urls import path 
urlpatterns = [ 
    path('', schema_view) 
] 

urlpatterns += [ 
# your patterns here 
]