Django Rest Framework - Could not resolve URL for hyperlinked relationship using view name “user-detail”

前端 未结 17 1239
感动是毒
感动是毒 2020-11-28 03:11

I am building a project in Django Rest Framework where users can login to view their wine cellar. My ModelViewSets were working just fine and all of a sudden I get this frus

相关标签:
17条回答
  • 2020-11-28 04:01

    If you're extending the GenericViewSet and ListModelMixin classes, and have the same error when adding the url field in the list view, it's because you're not defining the detail view. Be sure you're extending the RetrieveModelMixin mixin:

    class UserViewSet (mixins.ListModelMixin,
                       mixins.RetrieveModelMixin,
                       viewsets.GenericViewSet):
    
    0 讨论(0)
  • 2020-11-28 04:01

    It appears that HyperlinkedModelSerializer do not agree with having a path namespace. In my application I made two changes.

    # rootapp/urls.py
    urlpatterns = [
        # path('api/', include('izzi.api.urls', namespace='api'))
        path('api/', include('izzi.api.urls')) # removed namespace
    ]
    

    In the imported urls file

    # app/urls.py
    app_name = 'api' // removed the app_name
    

    Hope this helps.

    0 讨论(0)
  • 2020-11-28 04:02

    If you omit the fields 'id' and 'url' from your serializer you won't have any problem. You can access to the posts by using the id that is returned in the json object anyways, which it makes it even easier to implement your frontend.

    0 讨论(0)
  • 2020-11-28 04:04

    I ran into the same error while I was following the DRF quickstart guide http://www.django-rest-framework.org/tutorial/quickstart/ and then attempting to browse to /users. I've done this setup many times before without problems.

    My solution was not in the code but in replacing the database.

    The difference between this install and the others before was when I created the local database.

    This time I ran my

    ./manage.py migrate
    ./manage.py createsuperuser
    

    immediately after running

    virtualenv venv
    . venv/bin/activate
    pip install django
    pip install djangorestframework
    

    Instead of the exact order listed in the guide.

    I suspected something wasn't properly created in the DB. I didn't care about my dev db so I deleted it and ran the ./manage.py migrate command once more, created a super user, browsed to /users and the error was gone.

    Something was problematic with the order of operations in which I configured DRF and the db.

    If you are using sqlite and are able to test changing to a fresh DB then it's worth an attempt before you go dissecting all of your code.

    0 讨论(0)
  • 2020-11-28 04:06

    I ran into this error after adding namespace to my url

     url('api/v2/', include('api.urls', namespace='v2')),
    

    and adding app_name to my urls.py

    I resolved this by specifying NamespaceVersioning for my rest framework api in settings.py of my project

    REST_FRAMEWORK = {
        'DEFAULT_VERSIONING_CLASS':'rest_framework.versioning.NamespaceVersioning'}
    
    0 讨论(0)
提交回复
热议问题