简体   繁体   English

Django Rest API urlsplit错误

[英]Django Rest API urlsplit error

I am trying to set up an API using Django Rest, I've attempted to use the quick start guide, but all I can get is this error: 我正在尝试使用Django Rest设置API,我尝试使用快速入门指南,但我能得到的只是这个错误:

'Module_six_moves_urllib_parse' object has no attribute 'urlsplit'

I can't find any reference to this error on the internet, let alone how to solve it. 我在互联网上找不到任何对此错误的引用,更不用说如何解决它了。

Here is my urls file: 这是我的网址文件:

from django.conf.urls import patterns, include, url
from django.contrib.auth.models import User
from django.contrib import admin

from rest_framework import routers, serializers, viewsets

admin.autodiscover()


class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'is_staff')


class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

urlpatterns = patterns('',
    url(r'^', include(router.urls)),
    url(r'^', include('logs.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
)

Full traceback: 完全追溯:

Environment: 环境:

Request Method: GET 请求方法:GET

Django Version: 1.6 Python Version: 2.7.6 Installed Applications: ('rest_framework', 'south', 'django.contrib.admin', 'django.contrib.admindocs', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'logs', 'django_nose') Installed Middleware: ('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware') Django版本:1.6 Python版本:2.7.6已安装的应用程序:('rest_framework','south','django.contrib.admin','django.contrib.admindocs','django.contrib.auth','django.contrib .contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','logs','django_nose')已安装的中间件:('django.contrib.sessions.middleware.SessionMiddleware ','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware .clickjacking.XFrameOptionsMiddleware“)

Template error: In template /Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/rest_framework/templates/rest_framework/base.html, error at line 87 'Module_six_moves_urllib_parse' object has no attribute 'urlsplit' 77 : 模板错误:在模板/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/rest_framework/templates/rest_framework/base.html中,第87行的错误'Module_six_moves_urllib_parse'对象没有属性'urlsplit'77 :
rel="nofollow" title="Make a GET request on the {{ name }} resource">GET rel =“nofollow”title =“在{{name}}资源”> GET上发出GET请求

78 : 78:

79 : 79:

80 : title="Specify a format for the GET request"> 80:title =“指定GET请求的格式”>

81 : 81:

82 : 82:

83 : 83:

84 : {% for format in available_formats %} 84:{%for available_formats%}

85 : 85:

  • 86 : 86:

    87 : href=' {% add_query_param request api_settings.URL_FORMAT_OVERRIDE format %} ' 87:href ='{%add_query_param request api_settings.URL_FORMAT_OVERRIDE format%}'

    88 : 88:
    rel="nofollow" 相对= “nofollow”

    89 : title="Make a GET request on the {{ name }} resource with the format set to {{ format }} "> 89:title =“在{{name}}资源上发出GET请求,格式设置为{{ format }} ”>

    90 : {{ format }} 90:{{format}}

    91 : 91:

    92 : 92:

  • 93 : {% endfor %} 93:{%endfor%}

    94 : 94:

    95 : 95:

    96 : 96:

    97 : 97:

    Traceback: File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 139. response = response.render() File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/response.py" in render 105. self.content = self.rendered_content File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/rest_framework/response.py" in rendered_content 59. ret = renderer.render(self.data, media_type, context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/rest_framework/renderers.py" in render 733. ret = template.render(context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py" in render 140. return self._render(context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py" in _render 134. return self.nodelist.render(context) File "/Users/taylorhobbs/.virtua 回溯:get_response中的文件“/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/core/handlers/base.py”139. response = response.render()File“/ Users / taylorhobbs / .virtualenvs / Workout_log / lib / python2.7 / site-packages / django / template / response.py“in render 105. self.content = self.rendered_content File”/Users/taylorhobbs/.virtualenvs/Workout_log/lib/ python2.7 / site-packages / rest_framework / response.py“in rendered_content 59. ret = renderer.render(self.data,media_type,context)File”/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/ site-packages / rest_framework / renderers.py“in render 733. ret = template.render(context)File”/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base。 py“in render 140. return self._render(context)File”/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py“in _render 134. return self。 nodelist.render(context)File“/Users/taylorhobbs/.virtua lenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/loader_tags.py" in render 123. return compiled_parent._render(context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py" in _render 134. return self.nodelist.render(context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/loa lenvs / Workout_log / lib / python2.7 / site-packages / django / template / base.py“in render 840. bit = self.render_node(node,context)File”/Users/taylorhobbs/.virtualenvs/Workout_log/lib/ python2.7 / site-packages / django / template / debug.py“在render_node 78中。返回node.render(context)文件”/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django /template/loader_tags.py“在渲染123中。在_render中返回compiled_pa​​rent._render(context)文件”/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py“ 134.在render 840中返回self.nodelist.render(context)文件“/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py”.bit = self.render_node (节点,上下文)文件“/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/debug.py”在render_node 78中。返回node.render(context)文件“/ Users /taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/loa der_tags.py" in render 62. result = block.nodelist.render(context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/defaulttags.py" in render 305. return nodelist.render(context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py" in render 840. bit = self.render_node(node, context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/debug.py" in render_node 78. return node.render(context) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/defaulttags.py" in render 196. nodelist.append(node.render(context)) der_tags.py“in render 62. result = block.nodelist.render(context)File”/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py“in render 840. bit = self.render_node(node,context)文件“/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/debug.py”在render_node 78中。返回node.render (context)文件“/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/defaulttags.py”在渲染305中。返回nodelist.render(context)文件“/ Users / taylorhobbs /.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py“in render 840. bit = self.render_node(node,context)File”/Users/taylorhobbs/.virtualenvs/Workout_log/ lib / python2.7 / site-packages / django / template / debug.py“在render_node 78中。返回node.render(context)文件”/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages /django/template/defaulttags.py“在渲染196. nodelist.append(node.render(context)) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py" in render 1125. return func(*resolved_args, **resolved_kwargs) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/rest_framework/templatetags/rest_framework.py" in add_query_param 86. return escape(replace_query_param(uri, key, val)) File "/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/rest_framework/templatetags/rest_framework.py" in replace_query_param 22. (scheme, netloc, path, query, fragment) = urlparse.urlsplit(url) 在渲染1125中输入文件“/Users/taylorhobbs/.virtualenvs/Workout_log/lib/python2.7/site-packages/django/template/base.py”。返回func(* resolved_args,** resolved_kwargs)文件“/ Users / taylorhobbs /.virtualenvs/Workout_log/lib/python2.7/site-packages/rest_framework/templatetags/rest_framework.py“in add_query_param 86. return escape(replace_query_param(uri,key,val))File”/Users/taylorhobbs/.virtualenvs/替换_query_param中的Workout_log / lib / python2.7 / site-packages / rest_framework / templatetags / rest_framework.py“22.(scheme,netloc,path,query,fragment)= urlparse.urlsplit(url)

    Exception Type: AttributeError at / Exception Value: 'Module_six_moves_urllib_parse' object has no attribute 'urlsplit' 异常类型:AttributeError at / Exception值:'Module_six_moves_urllib_parse'对象没有属性'urlsplit'

    Try upgrading your version of Django. 尝试升级您的Django版本。 Base 1.6 doesn't have this function, but 1.6.3 does. Base 1.6不具备此功能,但1.6.3具有此功能。 https://docs.djangoproject.com/en/dev/releases/1.6.3/ https://docs.djangoproject.com/en/dev/releases/1.6.3/

    So I've solved my issue, for the time being anyway, I changed my DRF version from 3 to 2.4 and it seems to have solved my issue. 所以我已经解决了我的问题,无论如何,我把我的DRF版本从3改为2.4,它似乎解决了我的问题。 If anyone else has a legitimate answer please share it. 如果其他人有合法答案,请分享。

    Yes that's exactly the error I'm getting. 是的,这正是我得到的错误。 I'm using python 2.6 , Django 1.6. 我正在使用python 2.6,Django 1.6。 I'll try to change to DRF 2.4 我会尝试改用DRF 2.4

    PS: when I used Python 3.4 and django 1.7 with latest DRF. PS:当我使用Python 3.4和django 1.7时使用最新的DRF。 there was no error. 没有错误。 PSS - removed 3.0.1 and installed 2.4.4 and then added this to settings.py. PSS - 删除3.0.1并安装2.4.4然后将其添加到settings.py。 It worked. 有效。

    TEMPLATE_LOADERS = (
        'django.template.loaders.filesystem.Loader',
        'django.template.loaders.app_directories.Loader',
    )
    

    声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

     
    粤ICP备18138465号  © 2020-2024 STACKOOM.COM