为什么我为django rest framework swagger获取了“no module named urls”错误?

时间:2016-08-05 22:34:53

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

来自我的 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视点/”,schema_view),     ... ]

AttributeError at /schema-view/

'ObtainAuthToken' object has no attribute 'get_serializer_class'

我从教程中复制/粘贴了这段代码,但它没有用,为什么它不起作用,但它似乎与get_serializer_class()没有为只有一个视图类明确定义的事实有关继承自APIView,这是ObtainAuthToken类的情况。由于内置于其余框架中的元类使用,我一直很难跟踪类方法,所以我无法确定。

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

2 个答案:

答案 0 :(得分:2)

这个问题是因为django-rest-swagger版本。尝试使用pj 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

答案 1 :(得分:0)

对于Django&gt; 1.10项目urls.py

 

   <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />

    <div id="a8" style="float:left;width:100%;margin:5px 0px 10px 10px;text-align:left;font-size:17px;">
        <div class="yopdiv" style="float:left;width:10.5%;font-size:16px;margin-top:3px;font-family:arial;">
            <label>Organisation</label>
        </div>
        <div class="org" style="float:left;width:24%;">
            <input style="display:none;" id="orgid" type="text" name="orgid" value="1" />
            <input type="text" name="organisation" id="orgname" style="width:95%;height:20px;font-size:17px;" value="" required/>
        </div>
        <div class="formlbl" style="float:left;width:5.5%;font-size:16px;margin-top:3px;font-family:arial;">
            <label>From </label>
        </div>
        <div class="formtxt" style="float:left;width:10%;">
            <input type="text" id="fromdt" name="fromdate" maxlength="10" style="width:95%;height:20px;font-size:15px;" value="" />
        </div>
        <div class="tolbl" style="float:left;width:4%;font-size:16px;margin:3px 0px 0 15px;font-family:arial;">
            <label>To</label>
        </div>
        <div class="totxt" style="float:left;width:10%;font-size:18px;">
            <input type="text" name="todate" id="todt" value="" style="width:90%;height:20px;font-size:17px;" />
        </div>
        <div class="cpctylbl" style="float:left;width:6%;font-size:16px;margin:3px 0px 0 15px;font-family:arial;">
            <label>Capacity</label>
        </div>
        <div class="cptxt" style="float:left;width:16%;font-size:18px;">
            <input type="text" name="capacity" id="cpcty" value="" style="width:97%;height:20px;font-size:17px;" />
        </div>

        <div class="plusdiv" style="float:left;width:3%;margin-left:-2px;padding-left:20px;">
            <a id='adddata' href="#"><i class="fa fa-plus" style="width:70%;font-size:25px;color:white;background-color:#dc143c;padding-left:2px;"></i></a>
        </div>
        <div class="crossdiv" style="float:left;width:5%;padding-left:10px;">
            <a id='cleardata' href="#"><i class="fa fa-remove" style="width:50%;font-size:25px;color:white;background-color:#dc143c;padding-left:4px;"></i></a>
        </div>
    </div>
    <div id="exptable" class="expdiv" style="max-height:140px;overflow: auto; width:100%;">
        <table cellspacing="0" style="width:100%;" cellpadding="0" id=tableexp>
            <thead>
                <tr>
                    <th style="width:25%;">Organisation</th>
                    <th style="width:20%;">From</th>
                    <th style="width:13%;">To</th>
                    <th style="width:20%;">Capacity</th>
                    <th style="width:5%;">Edit</th>
                    <th style="width:5%;">Delete</th>
                </tr>
            </thead>
            <tbody>

            </tbody>

        </table>
    </div>