您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python 之路,Django rest framework 初探

5b51 2022/1/14 8:24:07 python 字数 10225 阅读 659 来源 www.jb51.cc/python

Django rest framework介绍 Django REST framework is a powerful and flexible toolkit for building Web AP

概述

Django REST framework is a powerful and flexible toolkit for building Web APIs.

Some reasons you might want to use REST framework:

REST framework requires the following:

The following packages are optional:

Install using pip,including any optional packages you want...

...or clone the project from github.

Add 'rest_framework' to your INSTALLED_APPS setting.

If you're intending to use the browsable API you'll probably also want to add REST framework's login and logout views. Add the following to your root urls.py file.

Note that the URL path can be whatever you want,but you must include 'rest_framework.urls' with the 'rest_framework'namespace. You may leave out the namespace in Django 1.9+,and REST framework will set it for you.

<h3 id="example">
<a class="toclink" href="http://www.django-rest-framework.org/#example"&gt;快速上手实例

Let's take a look at a quick example of using REST framework to build a simple model-backed API.

We'll create a read-write API for accessing information on the users of our project.

Any global settings for a REST framework API are kept in a single configuration dictionary named REST_FRAMEWORK. Start off by adding the following to your settings.py module:

Don't forget to make sure you've also added rest_framework to your INSTALLED_APPS.

We're ready to create our API now. Here's our project's root urls.py module:

class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url','username','email','is_staff')

class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer

router = routers.DefaultRouter()
router.register(r'users',UserViewSet)

urlpatterns = [
url(r'^',include(router.urls)),url(r'^api-auth/',namespace='rest_framework'))
]

You can now open the API in your browser at ,and view your new 'users' API. If you use the login control in the top right corner you'll also be able to add,create and delete users from the system.

from django.http import HttpResponse,JsonResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from rest_framework.decorators import api_view

from rest_framework import status
from rest_framework.response import Response

class EventLogSerializer(serializers.ModelSerializer):
class Meta:
model = models.EventLog
fields = ('id','user','name','event_type','detail','asset','date','memo')

@api_view(['GET','POST'])
def eventlog_list(request):
"""
List all snippets,or create a new snippet.
"""
if request.method == 'GET':
eventlogs = models.EventLog.objects.all()
serializer = EventLogSerializer(eventlogs,many=True)
return Response(serializer.data)

elif request.method == 'POST':
    print("request",request.data)
    serializer = EventLogSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data,status=status.HTTP_201_CREATED)
    return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

@api_view(['GET','POST','PUT'])

@csrf_exempt
def eventlog_detail(request,pk):
"""
Retrieve,update or delete a code eventlog.
"""
try:
eventlog_obj = models.EventLog.objects.get(pk=pk)
except models.EventLog.DoesNotExist:
return HttpResponse(status=404)

if request.method == 'GET':
    serializer = EventLogSerializer(eventlog_obj)
    return JsonResponse(serializer.data)

elif request.method == 'PUT':
    print(request)
    data = JSONParser().parse(request)
    serializer = EventLogSerializer(eventlog_obj,data=data)
    if serializer.is_valid():
        serializer.save()
        return JsonResponse(serializer.data)
    return JsonResponse(serializer.errors,status=400)

elif request.method == 'DELETE':
    eventlog_obj.delete()
    return HttpResponse(status=204)
elif request.method == 'POST':
    print("request",request.data)
    serializer = EventLogSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data,status=status.HTTP_201_CREATED)
    return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
if request.method == 'GET':
    serializer = EventLogSerializer(eventlog_obj)
    return JsonResponse(serializer.data)

elif request.method == 'PUT':
    print(request)
    data = JSONParser().parse(request)
    serializer = EventLogSerializer(eventlog_obj,data=data)
    if serializer.is_valid():
        serializer.save()
        return JsonResponse(serializer.data)
    return JsonResponse(serializer.errors,status=400)

elif request.method == 'DELETE':
    eventlog_obj.delete()
    return HttpResponse(status=204)

from rest_framework import status
from rest_framework.response import Response

class EventLogSerializer(serializers.ModelSerializer):
class Meta:
model = models.EventLog
fields = ('id','user','name','event_type','detail','asset','date','memo')

@api_view(['GET','POST'])
def eventlog_list(request):
"""
List all snippets,or create a new snippet.
"""
if request.method == 'GET':
eventlogs = models.EventLog.objects.all()
serializer = EventLogSerializer(eventlogs,many=True)
return Response(serializer.data)

@csrf_exempt
def eventlog_detail(request,pk):
"""
Retrieve,update or delete a code eventlog.
"""
try:
eventlog_obj = models.EventLog.objects.get(pk=pk)
except models.EventLog.DoesNotExist:
return HttpResponse(status=404)

from rest_framework import status
from rest_framework.response import Response

class EventLogSerializer(serializers.ModelSerializer):
class Meta:
model = models.EventLog
fields = ('id','user','name','event_type','detail','asset','date','memo')

@api_view(['GET','POST'])
def eventlog_list(request):
"""
List all snippets,or create a new snippet.
"""
if request.method == 'GET':
eventlogs = models.EventLog.objects.all()
serializer = EventLogSerializer(eventlogs,many=True)
return Response(serializer.data)

elif request.method == 'POST':
    print("request",request.data)
    serializer = EventLogSerializer(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data,status=status.HTTP_201_CREATED)
    return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

@csrf_exempt
def eventlog_detail(request,pk):
"""
Retrieve,update or delete a code eventlog.
"""
try:
eventlog_obj = models.EventLog.objects.get(pk=pk)
except models.EventLog.DoesNotExist:
return HttpResponse(status=404)

if request.method == 'GET':
    serializer = EventLogSerializer(eventlog_obj)
    return JsonResponse(serializer.data)

elif request.method == 'PUT':
    print(request)
    data = JSONParser().parse(request)
    serializer = EventLogSerializer(eventlog_obj,data=data)
    if serializer.is_valid():
        serializer.save()
        return JsonResponse(serializer.data)
    return JsonResponse(serializer.errors,status=400)

elif request.method == 'DELETE':
    eventlog_obj.delete()
    return HttpResponse(status=204)

  

更多请看 http://www.django-rest-framework.org/ 

总结

以上是编程之家为你收集整理的python 之路,Django rest framework 初探全部内容,希望文章能够帮你解决python 之路,Django rest framework 初探所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶