【发布时间】:2017-10-11 12:43:33
【问题描述】:
目前我在url中传递参数'id'并通过id调用API但是我想通过参数调用API。这里是views.py`
class post_list(APIView):
def get(self,request,format=None):
post_resource=PostResource()
dataset=Dataset()
post = Post.objects.all()
serializer = PostSerializer(post, many=True)
a=[]
for row in post:
a.append(row)
return Response(serializer.data)
def post(self,request,format =None):
serializer = PostSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=201)
return Response(serializer.errors, status=400)
class post_detail(APIView):
def get_object(self, pk):
try:
return Post.objects.get(pk=pk)
except Post.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
post = self.get_object(pk)
serializer = PostSerializer(post)
return Response(serializer.data)
def put(self, request, pk, format=None):
snippet = self.get_object(pk)
serializer = PostSerializer(snippet, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk, format=None):
post = self.get_object(pk)
post.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
当我在 url 中传递 id 时,它只显示那个特定的 id 结果,但是如果我传递另一个字段而不是 id,我需要查看它会显示基于 that.so 的结果。所以我的问题是我应该做什么views.py 和 Urls.py 中的更改。这是 urls.py 文件`
from django.conf.urls import url
from api import views
from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = [
url(r'^post/$', views.post_list.as_view()),
url(r'^post/(?P<pk>[0-9]+)/$', views.post_detail.as_view()),
]
urlpatterns=format_suffix_patterns(urlpatterns)
这是我的 serializer.py 文件`
from rest_framework import serializers
from .models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
#fields=('ProductName','Score')
fields ='__all__'
`
【问题讨论】:
-
这取决于你想传递什么而不是
id。它是什么类型的?它是一个字符串吗?或uuid? -
我想传递字符串形式的“PName”。
-
您很可能需要查询参数,以便您可以按其他字段进行过滤。
标签: python-3.x django-models django-rest-framework django-views django-urls