创建一个“喜欢"的Django Rest Framework的url/button [英] Creating a "like" url/button for Django Rest Framework
问题描述
我正在研究用于iPhone应用程序的API.为了喜欢图片,我假设需要在序列化器中嵌入一个网址,该网址可用于在图片中添加喜欢的图片.有人可以帮我实现这个吗?
I'm working on an API to use for an iPhone app. In order to like a picture, I'm assuming I need to embed a url in my serializer that can be used to add a like to a photo. Could someone please help me implement this?
我可以查看网址,但是我不确定如何将照片的ID传递给视图.到目前为止,这是我到达的地方:
I am able to view the url, but I'm not sure how to pass the photo's id to the view. This is where I've gotten so far:
views.py:
views.py:
@api_view(['POST'])
def like_create_api(request, photo_id):
serializer = PhotoSerializer(data=request.DATA)
if serializer.is_valid():
serializer.object.content_object = get_object_or_404(Photo, id=photo_id)
serializer.object.likers.add(request.user)
serializer.save()
return RestResponse(serializer.data, status=status.HTTP_201_CREATED)
return RestResponse(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
serializers.py:
serializers.py:
class PhotoSerializer(serializers.ModelSerializer):
likers = serializers.HyperlinkedRelatedField(
many=True, view_name='user_account_detail_api', read_only=True,
lookup_field='username')
like_url = LikeUrlField("like_create_api")
class Meta:
model = Photo
fields = ['like_url', 'id', 'slug', 'photo', 'likers']
models.py:
models.py:
class Photo(HashtagMixin, TimeStampedModel):
category = models.ForeignKey("Category")
creator = models.ForeignKey(settings.AUTH_USER_MODEL)
likers = models.ManyToManyField(settings.AUTH_USER_MODEL,
related_name='likers', blank=True)
photo = models.ImageField(upload_to=upload_location)
slug = models.SlugField()
class Meta:
app_label = 'photos'
def __unicode__(self):
return u"{}".format(self.slug)
urls.py:
urls.py:
url(r'^like/$', 'api.views.like_create_api',
name='like_create_api'),
感谢您的帮助.预先谢谢你!
Any help is appreciated. Thank you in advance!
推荐答案
您无需使用序列化程序进行验证,只需保存like关系即可.
You don't need to use a serializer for validation just save the like relation.
@api_view(['POST'])
def like_create_api(request, photo_id):
photo = get_object_or_404(Photo.objects.all(), pk=photo_id)
photo.likers.add(request.user)
serializer = PhotoSerializer(photo)
return Response(serializer.data, status=status.HTTP_201_CREATED)
这篇关于创建一个“喜欢"的Django Rest Framework的url/button的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!