คำถามติดแท็ก django-rest-framework

ชุดเครื่องมือที่มีประสิทธิภาพและยืดหยุ่นสำหรับการสร้าง RESTful Web API Django เป็นเว็บเฟรมเวิร์ก Python ระดับสูงที่สนับสนุนการพัฒนาอย่างรวดเร็วและการออกแบบที่สะอาดและใช้งานได้จริง สร้างขึ้นโดยนักพัฒนาที่มีประสบการณ์ดูแลความยุ่งยากในการพัฒนาเว็บดังนั้นคุณจึงสามารถมุ่งเน้นไปที่การเขียนแอปของคุณโดยไม่จำเป็นต้องสร้างวงล้อใหม่ ฟรีและโอเพ่นซอร์ส

8
Django Rest Framework: ส่งคืนชุดย่อยของฟิลด์แบบไดนามิก
ปัญหา ตามที่แนะนำในแนวทางปฏิบัติที่ดีที่สุดสำหรับการออกแบบ Pragmatic RESTful API ที่แนะนำในบล็อกฉันต้องการเพิ่มfieldsพารามิเตอร์การสืบค้นไปยัง API ที่ใช้ Django Rest Framework ซึ่งช่วยให้ผู้ใช้สามารถเลือกเฉพาะฟิลด์ย่อยต่อทรัพยากร ตัวอย่าง Serializer: class IdentitySerializer(serializers.HyperlinkedModelSerializer): class Meta: model = models.Identity fields = ('id', 'url', 'type', 'data') แบบสอบถามปกติจะส่งคืนทุกฟิลด์ GET /identities/ [ { "id": 1, "url": "http://localhost:8000/api/identities/1/", "type": 5, "data": "John Doe" }, ... ] แบบสอบถามที่มีfieldsพารามิเตอร์ควรส่งคืนเฉพาะส่วนย่อยของฟิลด์: GET /identities/?fields=id,data [ { "id": …

1
เมื่อใดควรใช้ Serializer ของ create () และสร้าง () perform_create () ของ ModelViewset
ฉันต้องการชี้แจงเอกสารที่ระบุdjango-rest-frameworkเกี่ยวกับการสร้างวัตถุแบบจำลอง จนถึงตอนนี้ฉันพบว่ามี 3 แนวทางในการจัดการกับเหตุการณ์ดังกล่าว create()วิธีการของ Serializer นี่คือเอกสาร class CommentSerializer(serializers.Serializer): def create(self, validated_data): return Comment.objects.create(**validated_data) create()วิธีModelViewset เอกสารประกอบ class AccountViewSet(viewsets.ModelViewSet): queryset = Account.objects.all() serializer_class = AccountSerializer permission_classes = [IsAccountAdminOrReadOnly] perform_create()วิธีModelViewset เอกสารประกอบ class SnippetViewSet(viewsets.ModelViewSet): def perform_create(self, serializer): serializer.save(owner=self.request.user) แนวทางทั้งสามนี้มีความสำคัญขึ้นอยู่กับสภาพแวดล้อมการใช้งานของคุณ แต่เราต้องใช้แต่ละcreate() / perform_create()ฟังก์ชันเมื่อใด ??. บนมืออื่น ๆ ผมพบว่าบัญชีของบางอย่างที่สองสร้างวิธีการที่ถูกเรียกร้องให้มีการโพสต์คำขอเดียว modelviewset ของcreate()และของ create()serializer หวังว่าทุกคนจะแบ่งปันความรู้เพื่ออธิบายและสิ่งนี้จะเป็นประโยชน์อย่างมากในกระบวนการพัฒนาของฉัน

2
ModelSerializer โดยใช้คุณสมบัติของโมเดล
ฉันกำลังพยายามทำให้เป็นอนุกรมของโมเดลที่มีฟิลด์คุณสมบัติที่ฉันต้องการทำให้เป็นอนุกรมด้วย Models.py: class MyModel(models.Model): name = models.CharField(max_length=100) slug = models.AutoSlugField(populate_from='name') @property def ext_link(self): return "/".join([settings.EXT_BASE_URL, self.slug]) serializers.py: class MyModelSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = ('name', 'ext_link') เมื่อพยายามเข้าถึง URL ที่เกี่ยวข้องฉันได้รับข้อยกเว้นของ Serializer (KeyError) ในext_linkคุณสมบัติ ฉันจะทำให้ext_linkทรัพย์สินเป็นอนุกรมได้อย่างไร?

15
อัปโหลดไฟล์ Django Rest Framework
ฉันใช้ Django Rest Framework และ AngularJs เพื่ออัปโหลดไฟล์ ไฟล์มุมมองของฉันมีลักษณะดังนี้: class ProductList(APIView): authentication_classes = (authentication.TokenAuthentication,) def get(self,request): if request.user.is_authenticated(): userCompanyId = request.user.get_profile().companyId products = Product.objects.filter(company = userCompanyId) serializer = ProductSerializer(products,many=True) return Response(serializer.data) def post(self,request): serializer = ProductSerializer(data=request.DATA, files=request.FILES) if serializer.is_valid(): serializer.save() return Response(data=request.DATA) เนื่องจากวิธีการโพสต์บรรทัดสุดท้ายควรส่งคืนข้อมูลทั้งหมดฉันมีคำถามหลายข้อ: วิธีตรวจสอบว่ามีอะไรอยู่ในrequest.FILES? วิธีการจัดลำดับฟิลด์ไฟล์? ฉันจะใช้ parser ได้อย่างไร

3
วิธีเปลี่ยนชื่อฟิลด์ใน Django REST Framework
ฉันพยายามเปลี่ยนชื่อฟิลด์ Model ใน DRF Serializer เหมือนนามแฝงใน SQL ฉันลองใช้วิธีต่างๆแล้ว แต่ไม่สำเร็จ Models.py class Park(models.Model): name = models.CharField(max_length=256) alternate_name = models.CharField(max_length=256, blank=True) objects = models.GeoManager() class Meta: db_table = u'p_park' def __unicode__(self): return '%s' % self.name def alias_alternate_name(self): return self.alternate_name serializers.py class ParkSerializer(serializers.ModelSerializer): location = serializers.Field(source='alias_alternate_name') #location = serializers.SerializerMethodField(source='alias_alternate_name') #alternate_name as location class …

11
Django rest framework ซ้อนอ็อบเจกต์อ้างอิงตัวเอง
ฉันมีโมเดลที่มีลักษณะดังนี้: class Category(models.Model): parentCategory = models.ForeignKey('self', blank=True, null=True, related_name='subcategories') name = models.CharField(max_length=200) description = models.CharField(max_length=500) ฉันจัดการเพื่อให้แสดง json แบบแบนของทุกหมวดหมู่ด้วย serializer: class CategorySerializer(serializers.HyperlinkedModelSerializer): parentCategory = serializers.PrimaryKeyRelatedField() subcategories = serializers.ManyRelatedField() class Meta: model = Category fields = ('parentCategory', 'name', 'description', 'subcategories') ตอนนี้สิ่งที่ฉันต้องการทำคือให้รายการหมวดหมู่ย่อยมีการแสดงประเภทย่อยแบบอินไลน์ json แทนรหัสของพวกเขา ฉันจะทำอย่างไรกับ django-rest-framework ฉันพยายามค้นหาในเอกสาร แต่ดูเหมือนว่าไม่สมบูรณ์

8
Django Rest Framework - วิธีเพิ่มฟิลด์ที่กำหนดเองใน ModelSerializer
ฉันสร้างModelSerializerและต้องการเพิ่มฟิลด์ที่กำหนดเองซึ่งไม่ใช่ส่วนหนึ่งของโมเดลของฉัน ฉันพบคำอธิบายเพื่อเพิ่มช่องพิเศษที่นี่และฉันได้ลองทำสิ่งต่อไปนี้: customField = CharField(source='my_field') เมื่อฉันเพิ่มฟิลด์นี้และเรียกvalidate()ใช้ฟังก์ชันของฉันฟิลด์นี้ไม่ได้เป็นส่วนหนึ่งของattrdict attrมีฟิลด์โมเดลทั้งหมดที่ระบุยกเว้นฟิลด์เพิ่มเติม ดังนั้นฉันจึงไม่สามารถเข้าถึงช่องนี้ในการตรวจสอบความถูกต้องที่เขียนทับได้ฉันจะทำได้หรือไม่? เมื่อฉันเพิ่มฟิลด์นี้ในรายการฟิลด์ดังนี้: class Meta: model = Account fields = ('myfield1', 'myfield2', 'customField') จากนั้นฉันได้รับข้อผิดพลาดเนื่องจากcustomFieldไม่ใช่ส่วนหนึ่งของโมเดลของฉัน - สิ่งที่ถูกต้องเพราะฉันต้องการเพิ่มสำหรับซีเรียลไลเซอร์นี้เท่านั้น มีวิธีใดในการเพิ่มฟิลด์ที่กำหนดเองหรือไม่?

1
Django REST Framework (DRF): TypeError: register () ได้รับอาร์กิวเมนต์คำหลักที่ไม่คาดคิด 'base_name'
ฉันได้รับการอัพเดทเป็นdjangorestframework==3.11.0เวอร์ชั่นเก่ากว่าแล้ว ตอนนี้ฉันได้รับข้อผิดพลาดนี้ TypeError: register () ได้รับอาร์กิวเมนต์คำหลักที่ไม่คาดคิด 'base_name' Traceback ... ... ... File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/home/abu/projects/django-example/django2x/urls.py", line 21, in <module> path('sample/', include('sample.urls')), File "/home/abu/.virtualenvs/django-example/lib/python3.6/site-packages/django/urls/conf.py", line 34, in include urlconf_module = import_module(urlconf_module) File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 994, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.