Django-Rest-API-urlspli

2024-05-26 08:20:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Django Rest设置一个API,我尝试使用快速入门指南,但我只能得到以下错误:

'Module_six_moves_urllib_parse' object has no attribute 'urlsplit'

我在网上找不到任何关于这个错误的参考资料,更不用说如何解决它了。在

以下是我的URL文件:

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')),
)

完全回溯:

Environment:

Request Method: 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')

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 :
rel="nofollow" title="Make a GET request on the {{ name }} resource">GET

78 :

79 :

80 : title="Specify a format for the GET request">

81 :

82 :

83 :

84 : {% for format in available_formats %}

85 :

  • 86 :

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

    88 :
    rel="nofollow"

    89 : title="Make a GET request on the {{ name }} resource with the format set to {{ format }}">

    90 : {{ format }}

    91 :

    92 :

  • 93 : {% endfor %}

    94 :

    95 :

    96 :

    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/.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/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/loader_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)) 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)

    Exception Type: AttributeError at / Exception Value: 'Module_six_moves_urllib_parse' object has no attribute 'urlsplit'


    Tags: djangoinpyloglibpackagescontextsite
    3条回答

    是的,这正是我得到的错误。我使用的是python2.6和django1.6。我试着换成DRF2.4

    注:当我在最新的DRF中使用python3.4和django1.7时。没有错误。 P、 S.S-删除了3.0.1并安装了2.4.4,然后将其添加到设置.py. 成功了。在

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

    尝试升级您的Django版本。base1.6没有这个功能,但是1.6.3有。 https://docs.djangoproject.com/en/dev/releases/1.6.3/

    所以我已经解决了我的问题,不管怎样,我把我的DRF版本从3改为2.4,它似乎解决了我的问题。如果其他人有一个合理的答案,请分享。在

    相关问题 更多 >