জ্যাঙ্গো রেস্ট ফ্রেমওয়ার্ক - হাইপারলিঙ্কযুক্ত সম্পর্কের জন্য URL নামটি ব্যবহারকারীর নাম "ব্যবহারকারী-বিশদ" ব্যবহার করে সমাধান করতে পারেনি


108

আমি জ্যাঙ্গো রেস্ট ফ্রেমওয়ার্কে একটি প্রকল্প তৈরি করছি যেখানে ব্যবহারকারীরা তাদের ওয়াইন ভান্ডারটি দেখতে লগইন করতে পারেন। আমার মডেলভিউসেটস ঠিকঠাক কাজ করছিল এবং হঠাৎ করেই আমি হতাশার ত্রুটি পেয়ে যাই:

"ব্যবহারকারীর বিবরণ" নামটি ব্যবহার করে হাইপারলিঙ্কযুক্ত সম্পর্কের জন্য URL টি সমাধান করতে পারেনি। আপনি আপনার এপিআইতে সম্পর্কিত মডেলটি অন্তর্ভুক্ত করতে ব্যর্থ হতে পারেন, বা lookup_fieldএই ক্ষেত্রের বৈশিষ্ট্যটি ভুলভাবে কনফিগার করেছেন ।

ট্রেসব্যাক দেখায়:

    [12/Dec/2013 18:35:29] "GET /bottles/ HTTP/1.1" 500 76677
Internal Server Error: /bottles/
Traceback (most recent call last):
  File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/django/core/handlers/base.py", line 114, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/viewsets.py", line 78, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 57, in wrapped_view
    return view_func(*args, **kwargs)
  File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/views.py", line 399, in dispatch
    response = self.handle_exception(exc)
  File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/views.py", line 396, in dispatch
    response = handler(request, *args, **kwargs)
  File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/mixins.py", line 96, in list
    return Response(serializer.data)
  File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/serializers.py", line 535, in data
    self._data = [self.to_native(item) for item in obj]
  File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/serializers.py", line 325, in to_native
    value = field.field_to_native(obj, field_name)
  File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/relations.py", line 153, in field_to_native
    return self.to_native(value)
  File "/Users/bpipat/.virtualenvs/usertest2/lib/python2.7/site-packages/rest_framework/relations.py", line 452, in to_native
    raise Exception(msg % view_name)
Exception: Could not resolve URL for hyperlinked relationship using view 
name "user-detail". You may have failed to include the related model in 
your API, or incorrectly configured the `lookup_field` attribute on this 
field.

আমার কাছে একটি কাস্টম ইমেল ব্যবহারকারী মডেল রয়েছে এবং মডেলগুলিতে বোতল মডেল রয়েছে pyপি:

class Bottle(models.Model):    
      wine = models.ForeignKey(Wine, null=False)
      user = models.ForeignKey(User, null=False, related_name='bottles')

আমার সিরিয়ালাইজার:

class BottleSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = Bottle
        fields = ('url', 'wine', 'user')

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('email', 'first_name', 'last_name', 'password', 'is_superuser')

আমার মতামত:

class BottleViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows bottles to be viewed or edited.
    """
    queryset = Bottle.objects.all()
    serializer_class = BottleSerializer

class UserViewSet(ListCreateAPIView):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer

এবং অবশেষে ইউআরএল:

router = routers.DefaultRouter()
router.register(r'bottles', views.BottleViewSet, base_name='bottles')

urlpatterns = patterns('',
    url(r'^', include(router.urls)),
    # ...

আমার কোনও ব্যবহারকারীর বিশদ দর্শন নেই এবং আমি এই সমস্যাটি কোথা থেকে আসতে পারে তা দেখতে পাচ্ছি না। কোন ধারনা?

ধন্যবাদ

উত্তর:


96

কারণ এটি HyperlinkedModelSerializerআপনার সিরিয়ালাইজার Userআপনার সম্পর্কিত সম্পর্কিত URL টি সমাধান করার চেষ্টা করছে Bottle
আপনার ব্যবহারকারীর বিশদ দর্শন না থাকায় এটি এটি করতে পারে না। তাই ব্যতিক্রম।

  1. কেবল UserViewSetরাউটার দিয়ে নিবন্ধন করলেই আপনার সমস্যার সমাধান হবে না?
  2. আপনি ইউআরএল সমাধান করার চেষ্টা করার পরিবর্তে BottleSerializerস্পষ্টভাবে ব্যবহার করার জন্য আপনার ব্যবহারকারীর ক্ষেত্রটি সংজ্ঞায়িত করতে পারেন UserSerializer। এর জন্য নেস্টেড অবজেক্টগুলির সাথে ডিল করার ক্ষেত্রে সিরিয়ালাইজ ডক্স দেখুন ।

1
দুর্দান্ত ধন্যবাদ, আমি আমার রাউটারগুলিতে ইউজারভিউসেট মন্তব্য করেছি, এটি সমাধান করেছে!
বিপিপ্যাট

5
পয়েন্টগুলি ---- এটি স্পষ্টভাবে করুন --- অনেক যাদুতে অনেক সময় নষ্ট হয়ে যায়।
andilabs

আপনি কি দয়া করে আমার প্রকল্পে ভুল কনফিগার করা আছে তা নির্দেশ করতে পারেন ?
জেজেডি

@ গ্রিজেশচৌহান— ধন্যবাদ! এখন স্থির।
কার্লটন গিবসন

এটি কাজ না করার কারণটি ছিল যে জ্যাঙ্গো প্যারামিটার ব্যবহারকারীর জন্য আপনার বর্তমান দর্শনে ব্যবহারকারী থেকে সম্পর্কিত ডেটা দেখাতে চেয়েছিল। সাধারণত এটি উপলব্ধ মানগুলির একটি তালিকা তুলে ধরে। যেহেতু ইউজারভিউসেট সংজ্ঞায়িত করা হয়নি এটি ওয়েবপৃষ্ঠা রেন্ডার করতে বিশদগুলি টানতে সক্ষম হয় নি। ডিফল্ট রাউটারের অধীনে ইউজারভিউসেট এবং রেজিস্ট্রিং যুক্ত করা সমস্ত উপাদানকে রেন্ডার করতে জিনিসকে সম্পূর্ণ করে তোলে।
Doogle

65

আমি এই ত্রুটিটিও পেরিয়ে এসেছি এবং নীচে এটি সমাধান করেছি:

কারণটি হ'ল আমি "** - বিশদ" (ভিউ_নাম, উদাহরণস্বরূপ: ব্যবহারকারী-বিশদ) একটি নাম স্থান দেওয়া ভুলে গেছি। সুতরাং, জ্যাঙ্গো রেস্ট ফ্রেমওয়ার্ক সেই দর্শনটি খুঁজে পেল না।

আমার প্রকল্পে একটি অ্যাপ রয়েছে, ধরুন আমার প্রকল্পের নাম myprojectএবং অ্যাপটির নাম myapp

দুটি url.py ফাইল রয়েছে, একটি হ'ল myproject/urls.pyঅন্যটি myapp/urls.py। আমি অ্যাপ্লিকেশনটিকে ঠিক একটি জাতীয় স্থান দিয়েছি myproject/urls.py:

url(r'', include(myapp.urls, namespace="myapp")),

আমি বাকী ফ্রেমওয়ার্ক রাউটারগুলিতে নিবন্ধভুক্ত করেছি myapp/urls.pyএবং তারপরে এই ত্রুটিটি পেয়েছি।

আমার সমাধানটি ছিল স্পষ্টভাবে নেমস্পেসের সাথে url সরবরাহ করা:

class UserSerializer(serializers.HyperlinkedModelSerializer):
    url = serializers.HyperlinkedIdentityField(view_name="myapp:user-detail")

    class Meta:
        model = User
        fields = ('url', 'username')

এবং এটি আমার সমস্যার সমাধান করে।


@ বোভসন, এটি একটি কবজির মতো কাজ করে! ধন্যবাদ আপনি আমার দিকে কয়েক ঘন্টা হতাশার সমাধান করেছেন।
lmiguelvargasf

এটি আমার জন্য কাজ করে তোলে। আমার পাশের একটি গুরুত্বপূর্ণ বিষয় হ'ল রুটটিতে বেস_নামের সঠিক বানান!
ম্যাগি

1
এখানে মূল
নামটি হ'ল

আমার মতো সমস্যা ছিল এবং এই উত্তরটি অনুসন্ধানের 3 ঘন্টা পরে আমার সমস্যাটি স্থির করে! @ বোভেনসন
তিমি 52Hz

: অথবা আপনি extra_kwargs ব্যবহার DRF যেমন বিশেষ পরামর্শ দেওয়া হচ্ছে করতে পারেনextra_kwargs = {'url': {'view_name': 'myapp:user-detail'}}
ChrisRob

19

হতে পারে কেউ এটিকে একবার দেখতে পারেন: http://www.django-rest-framework.org/api-guide/routers/

হাইপারলিংকড সিরিয়ালাইজারগুলির সাথে নেমস্পেসিং ব্যবহার করা হলে আপনাকেও নিশ্চিত করতে হবে যে সিরিয়ালিয়ালের কোনও ভিউ_নামের প্যারামিটারগুলি সঠিকভাবে নামের স্থানটি প্রতিবিম্বিত করে। উদাহরণ স্বরূপ:

urlpatterns = [
    url(r'^forgot-password/$', ForgotPasswordFormView.as_view()),
    url(r'^api/', include(router.urls, namespace='api')),
]

আপনাকে view_name='api:user-detail'ব্যবহারকারীর বিবরণ দৃশ্যে হাইপার-লিঙ্কযুক্ত সিরিয়ালাইজ ক্ষেত্রগুলির জন্য একটি প্যারামিটার অন্তর্ভুক্ত করতে হবে ।

class UserSerializer(serializers.HyperlinkedModelSerializer):
    url = serializers.HyperlinkedIdentityField(view_name="api:user-detail")

class Meta:
    model = User
    fields = ('url', 'username')

1
সংক্ষিপ্ত আকারে, আপনার এপিকে একটি নাম স্থান দেওয়া শিরোনামে ত্রুটির কারণ হয়ে থাকে, আপনি সম্ভবত এটি অনেক জায়গায় পরিবর্তন না করতে চাইলে এটি করতে চান না।
চিহ্নিত করুন

আমার জন্য কাজ! আমার প্রজেক্টে urls.pyআমার দ্বিগুণ বাস ছিল newsite: (১) newsite/urls.py(জাঙ্গো তৈরি করেছেন) (২) polls/urls.py(৩) polls/api/v1/urls.py ............ আমাকে নেস্টেড নামটি ব্যবহার করে উল্লেখ করতে হবেurl = serializers.HyperlinkedIdentityField(view_name="polls:polls_api:user-detail")
গ্রিজেশ চৌহান ২

12

এই ত্রুটিটি ঘটায় এমন অন্য একটি দুষ্টু ভুলটি আপনার url.py এ বেস_নামকে অযথা সংজ্ঞায়িত করা হয়েছে। উদাহরণ স্বরূপ:

router.register(r'{pathname}', views.{ViewName}ViewSet, base_name='pathname')

এটি উপরে উল্লিখিত ত্রুটির কারণ ঘটবে। সেই বেস নামটি সেখানেই পেয়ে যান এবং একটি কার্যকারী API এ ফিরে যান। নীচের কোডটি ত্রুটিটি ঠিক করবে। হুররে!

router.register(r'{pathname}', views.{ViewName}ViewSet)

তবে, আপনি সম্ভবত নির্বিচারে বেস_নামটি যোগ করেননি, আপনি এটি করতে পেরেছেন কারণ আপনি ভিউর জন্য একটি কাস্টম ডিফ get_queryset () সংজ্ঞায়িত করেছেন এবং তাই জাজানো আদেশের ভিত্তিতে আপনি বেস_নামটি যুক্ত করেছেন। এক্ষেত্রে আপনাকে প্রশ্নের উত্তরসূচক সিরিয়ালের জন্য 'url' হাইপারলিঙ্কডইডেন্টিটি ফিল্ড হিসাবে স্পষ্টভাবে সংজ্ঞায়িত করতে হবে। লক্ষ্য করুন যে আমরা এই হাইপারলিঙ্কডইডেন্টিফিল্ডটি সংশোধন করছি এমন দৃশ্যের যে সিরিয়ালটি ত্রুটি করছে। যদি আমার ত্রুটিটি ছিল "ভিউ নাম" অধ্যয়ন-বিশদ "ব্যবহার করে হাইপারলিঙ্কযুক্ত সম্পর্কের জন্য URL টি সমাধান করতে না পারা You তবে আপনি আপনার এপিআইতে সম্পর্কিত মডেলটি অন্তর্ভুক্ত করতে ব্যর্থ হতে পারেন, বা lookup_fieldএই ক্ষেত্রের বৈশিষ্ট্যটি ভুলভাবে কনফিগার করেছেন " " আমি নিম্নলিখিত কোড দিয়ে এটি ঠিক করতে পারে।

আমার মডেলভিউসেট (কাস্টম get_queryset কেন আমাকে রাউটারে বেস_নাম যুক্ত করতে হয়েছিল reg রেজিস্টার () প্রথম স্থানে):

class StudyViewSet(viewsets.ModelViewSet):
    serializer_class = StudySerializer

    '''custom get_queryset'''
    def get_queryset(self):
        queryset = Study.objects.all()
        return queryset

Url.py এ এই মডেলভিউসেটের জন্য আমার রাউটার রেজিস্ট্রেশন:

router.register(r'studies', views.StudyViewSet, base_name='studies')

এবং এখানে অর্থ উপায়ে হয়! তাহলে আমি এটির মতো সমাধান করতে পারলাম:

class StudySerializer(serializers.HyperlinkedModelSerializer):
    url = serializers.HyperlinkedIdentityField(view_name="studies-detail")
    class Meta:
        model = Study
        fields = ('url', 'name', 'active', 'created',
              'time_zone', 'user', 'surveys')

হাঁ। আপনার এই হাইপারলিঙ্কডইডেন্টিটিফিল্ডটি কাজ করার জন্য স্পষ্টতই নিজেকে সংজ্ঞায়িত করতে হবে। এবং আপনাকে এটি নিশ্চিত করতে হবে যে view_nameহাইপারলিঙ্কডইডেন্টিটিফিল্ডে সংজ্ঞায়িত base_nameসংজ্ঞাটি আপনি url.py এর পরে সংযুক্ত একটি '-বিবরণ' যুক্ত হিসাবে সংজ্ঞায়িত করেছেন is


2
এটি আমার পক্ষে কাজ করেছিল, তবে আমাকে পুরো রুট রাখতে হয়েছিল <app_name>:studies-detail। উদাহরণস্বরূপ আমার যদি আমার অ্যাপটি কল করা হয় tanksতবে পুরো পথটি হবে HyperlinkedIdentityField(view_name="tanks:studies-detail")। পুরো রুটটি এবং রাউটারটি স্বয়ংক্রিয়ভাবে তৈরি হচ্ছে এমন লেবেলটি দেখতে, আমি জ্যাঙ্গো-এক্সেনশনস show_urls কমান্ডটি ব্যবহার করেছি figure
dtasev

10

এই কোডটিও কাজ করা উচিত।

class BottleSerializer(serializers.HyperlinkedModelSerializer):

  user = UserSerializer()

  class Meta:
    model = Bottle
    fields = ('url', 'wine', 'user')


এটি আমার পক্ষে কাজ করেছে, তবে এটি কাজ করার জন্য আমাকে রাউটার.রেজিস্টার (আর'বটলস ', ভিউস.বটলভিউসেট, বেস_নাম =' বোতল ') রাউটার.রেজিস্টারে (আর' বোতলস ', ভিউস-বোতলভিউসেট) পরিবর্তন করতে হয়েছিল। আমি জানি না কেন এই পরিবর্তন দরকার ছিল।
manpikin

4

আমি আমার ইউআরএলতে নেমস্পেস যুক্ত করার পরে এই ত্রুটির মধ্যে পড়েছিলাম

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

এবং আমার urls.py এ অ্যাপ_নাম যুক্ত করা হচ্ছে

আমি আমার প্রকল্পের সেটিংস.পাইতে আমার বিশ্রাম ফ্রেমওয়ার্ক এপিআইয়ের জন্য নেমস্পেস ভার্সনিং নির্দিষ্ট করে সমাধান করেছি

REST_FRAMEWORK = {
    'DEFAULT_VERSIONING_CLASS':'rest_framework.versioning.NamespaceVersioning'}

3

আজ, আমি একই ত্রুটি পেয়েছি এবং নীচে পরিবর্তনগুলি আমাকে উদ্ধার করেছে।

পরিবর্তন

class BottleSerializer(serializers.HyperlinkedModelSerializer):

প্রতি:

 class BottleSerializer(serializers.ModelSerializer):

2

একই ত্রুটি, তবে ভিন্ন কারণ:

আমি একটি কাস্টম ব্যবহারকারী মডেল সংজ্ঞায়িত করেছি, নতুন কোনও ক্ষেত্র নেই:

from django.contrib.auth.models import (AbstractUser)
class CustomUser(AbstractUser):
    """
    custom user, reference below example
    https://github.com/jonathanchu/django-custom-user-example/blob/master/customuser/accounts/models.py

    # original User class has all I need
    # Just add __str__, not rewrite other field
    - id
    - username
    - password
    - email
    - is_active
    - date_joined
    - method, email_user
    """

    def __str__(self):
        return self.username

এটি আমার দর্শন ফাংশন:

from rest_framework import permissions
from rest_framework import viewsets
from .models import (CustomUser)
class UserViewSet(viewsets.ModelViewSet):
    permission_classes = (permissions.AllowAny,)
    serializer_class = UserSerializer

    def get_queryset(self):
        queryset = CustomUser.objects.filter(id=self.request.user.id)
        if self.request.user.is_superuser:
            queryset = CustomUser.objects.all()
        return queryset

যেহেতু আমি querysetসরাসরি প্রবেশ করিনি UserViewSet, তাই base_nameআমি যখন এই ভিউসেটটি নিবন্ধন করি তখন আমাকে সেট করতে হবে । এখানেই আমার ত্রুটি বার্তাটি urls.pyফাইলের কারণে ঘটে :

from myapp.views import (UserViewSet)
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'users', UserViewSet, base_name='customuser')  # <--base_name needs to be 'customuser' instead of 'user'

base_nameআপনার মডেল নাম হিসাবে একই প্রয়োজন - customuser


পুরানো পোস্ট, তবে আপনার মন্তব্য "# <- বেস_নামটি 'ব্যবহারকারীর পরিবর্তে' কাস্টম ব্যবহারকারীর 'হওয়া দরকার যা আমার দিনটি সংরক্ষণ করেছিল। ধন্যবাদ!
হ্যানন সিজার

1

যদি আপনি জেনেরিকভিউসেট এবং লিস্টমোডেলমিক্সিন ক্লাসগুলি প্রসারিত করেন এবং তালিকার ভিউতে url ক্ষেত্রটি যুক্ত করার সময় একই ত্রুটি থাকে , কারণ আপনি বিশদ বিবরণটি সংজ্ঞায়িত করছেন না। আপনি পুনরুদ্ধার মডেলমিক্সিন মিশ্রণটি প্রসারিত করছেন তা নিশ্চিত হন :

class UserViewSet (mixins.ListModelMixin,
                   mixins.RetrieveModelMixin,
                   viewsets.GenericViewSet):

1

এটি প্রদর্শিত হচ্ছে যে HyperlinkedModelSerializerকোনও পথ থাকার সাথে একমত নয় namespace। আমার আবেদনে আমি দুটি পরিবর্তন করেছি।

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

আমদানি করা url ফাইলগুলিতে In

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

আশাকরি এটা সাহায্য করবে.


0

আমি যখন ডিআরএফ কুইকস্টার্ট গাইড http://www.django-rest-framework.org/tutorial/quickstart/ অনুসরণ করে / ব্যবহারকারীদের ব্রাউজ করার চেষ্টা করছিলাম তখন আমি একই ত্রুটির মধ্যে পড়েছিলাম । কোনও সমস্যা ছাড়াই আগে আমি এই সেটআপটি অনেকবার করেছি।

আমার সমাধান কোডে ছিল না তবে ডাটাবেস প্রতিস্থাপনে।

এই ইনস্টলটির আগে এবং অন্যান্যগুলির মধ্যে পার্থক্য ছিল যখন আমি স্থানীয় ডাটাবেস তৈরি করেছি।

এবার আমার দৌড়ে গেল

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

অবিলম্বে দৌড়ানোর পরে

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

গাইডে তালিকাভুক্ত সঠিক ক্রমের পরিবর্তে।

আমার সন্দেহ হয়েছিল যে ডিবিতে সঠিকভাবে কিছু তৈরি করা হয়নি। আমি আমার ডিবি ডিবি সম্পর্কে চিন্তা করি নি তাই আমি এটি মুছে ফেললাম এবং ./manage.py migrateআবারও কমান্ডটি চালিয়েছি, একটি সুপার ব্যবহারকারী তৈরি করেছি, ব্যবহারকারীদের / ব্রাউজ করেছি এবং ত্রুটিটি চলে গেছে।

আমি ডিআরএফ এবং ডিবি কনফিগার করেছি এমন ক্রিয়াকলাপগুলির সাথে কিছু সমস্যা ছিল।

আপনি যদি স্ক্লাইট ব্যবহার করছেন এবং একটি তাজা ডিবিতে পরিবর্তন পরীক্ষা করতে সক্ষম হন তবে আপনি আপনার সমস্ত কোড বিচ্ছিন্ন করার আগে এটি চেষ্টা করার মতো।


0

বোতল = সিরিয়ালাইজ.প্রাইমারিকিরিলেটেডফিল্ড (কেবলমাত্র_আপনি = সত্য)

মডেলটির অন্য দৃশ্যের সাথে লিঙ্ক না রেখেই পঠন_আপনি আপনাকে ক্ষেত্রটি উপস্থাপনের অনুমতি দেয়।


0

আমি ডিআরএফ 3.7.7 এ ত্রুটি পেয়েছি যখন ডাটাবেসে একটি স্লাগ মান খালি ('' এর সমান) থাকে।


0

আমি এই একই ইস্যুতে generics.RetrieveAPIViewদৌড়েছি এবং আমার ভিউসেটে বেস ক্লাস হিসাবে যুক্ত করে সমাধান করেছি ।


0

আমি প্রায় 2 ঘন্টা এই ত্রুটিতে আটকে ছিলাম:

"এপিআই_উসার্স / ব্যবহারকারী / 1 / এ হাইপারলিঙ্কযুক্ত সম্পর্কের জন্য ইউআরএল সমাধান করতে পারেনি" অপ্রয়োজনীয় / কনফিগারেশন এ এপিআই_উসার্স / ব্যবহারকারী / 1 / আপনি আপনার এপিআইতে সম্পর্কিত মডেলটি অন্তর্ভুক্ত করতে ব্যর্থ হতে পারেন, বা lookup_fieldএই ক্ষেত্রের বৈশিষ্ট্যটি ভুলভাবে কনফিগার করেছেন ।

আমি যখন শেষ পর্যন্ত সমাধানটি পাই তবে কেন বুঝতে পারি না, তাই আমার কোডটি হ'ল:

#models.py
class Users(models.Model):
    id          = models.AutoField(primary_key=True)
    name        = models.CharField(max_length=50, blank=False, null=False)
    email       = models.EmailField(null=False, blank=False) 
    class Meta:
        verbose_name = "Usuario"
        verbose_name_plural = "Usuarios"

    def __str__(self):
        return str(self.name)


#serializers.py
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Users
        fields = (
            'id',
            'url',
            'name',        
            'email',       
            'description', 
            'active',      
            'age',         
            'some_date',   
            'timestamp',
            )
#views.py
class UserViewSet(viewsets.ModelViewSet):
    queryset = Users.objects.all()
    serializer_class = UserSerializer

#urls_api.py
router = routers.DefaultRouter()
router.register(r'users',UserViewSet, base_name='users')

urlpatterns = [ 
        url(r'^', include(router.urls)),
]

তবে আমার মূল ইউআরএলগুলিতে এটি ছিল:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #api users
    url(r'^api_users/', include('usersApi.users_urls', namespace='api')),

]

সুতরাং পরিশেষে আমি সমস্যাটি মুছে ফেলছি নামস্থান মুছে ফেলার জন্য:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #api users
    url(r'^api_users/', include('usersApi.users_urls')),

]

এবং আমি অবশেষে আমার সমস্যাটি সমাধান করেছি, যাতে যে কেউ আমাকে কেন তা জানতে পারে ts


0

আপনি যদি আপনার সিরিয়ালাইজার থেকে ক্ষেত্রগুলি 'আইডি' এবং 'ইউআরএল' বাদ দেন তবে আপনার কোনও সমস্যা হবে না। আপনি যে কোনও উপায়ে json অবজেক্টে ফিরে আসা আইডিটি ব্যবহার করে পোস্টগুলিতে অ্যাক্সেস করতে পারেন, এটি আপনার সীমানা বাস্তবায়নে আরও সহজ করে তোলে।


0

আমারও একই সমস্যা ছিল, আমার মনে হয় আপনার পরীক্ষা করা উচিত

get_absolute_url

অবজেক্ট মডেলের পদ্ধতির ইনপুট মান (** কাওয়ারস) শিরোনাম। এবং লুকিং_ফিল্ডে ক্ষেত্রের সঠিক নামটি ব্যবহার করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.