【问题标题】:Why am I getting a "no module named urls" error for django rest framework swagger?为什么我收到 django rest 框架招摇的“没有名为 urls 的模块”错误?
【发布时间】:2016-12-12 10:08:34
【问题描述】:

来自我的 urls.py

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

我最近安装了django_rest_swagger,它包含在settings.py 的INSTALLED_APPS 中。但是,当我尝试运行服务器时,我得到一个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

我正在使用自定义用户身份验证模型和令牌身份验证,这可能会或可能不会影响这一点(我也无法使用可浏览的 API)。

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

此外,当我尝试实现架构视图时,我得到了这个单独的错误:

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'

我从教程中复制/粘贴了这段代码,但它为什么不起作用没有意义,但这似乎与get_serializer_class() 没有为仅继承自的视图类显式定义这一事实有关APIView,这是 ObtainAuthToken 类的情况。不过,由于 REST 框架中内置了元类的使用,我在跟踪类方法时遇到了很多困难,所以我不能确定。

我的最终目标是获取我正在编程的 API 的文档,但每次尝试似乎都会给我带来不同的问题。这里有什么我做错了吗?

【问题讨论】:

    标签: django django-rest-framework swagger python-import


    【解决方案1】:

    对于 Django > 1.10 项目 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
    ]
    

    【讨论】:

      【解决方案2】:

      这个问题是因为 django-rest-swagger 版本。尝试使用 pip install django-rest-swagger===0.3.5 和 django 1.9 安装 swagger 0.3.5 版本。如果你的 django 版本是 1.10,那么点击下面的链接解决问题https://github.com/marcgibbons/django-rest-swagger/issues/452

      【讨论】:

        猜你喜欢
        • 2017-10-05
        • 2012-08-12
        • 2014-05-16
        • 2017-06-04
        • 1970-01-01
        • 2018-09-04
        • 2021-12-10
        • 2017-01-25
        相关资源
        最近更新 更多