Django restframework入门示例

1.前提

官网地址为:http://www.django-rest-framework.org/

官方推荐安装以下安装包:

Markdown
URL:https://pypi.python.org/pypi/Markdown/

django-filter
URL:https://pypi.python.org/pypi/django-filter

django-crispy-forms
URL:https://github.com/maraujop/django-crispy-forms

django-guardian
URL: https://github.com/django-guardian/django-guardian

最后是restframework自身的下载地址:
djangorestframework
URL: https://pypi.python.org/pypi/djangorestframework/3.2.3

2.配置过程:

a.在settings.py做如下配置:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app',
    'rest_framework',
)

REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
    ],
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
    ),
    'DEFAULT_PARSER_CLASSES': (
        'rest_framework.parsers.JSONParser',
    )
}

标红处为需要手动添加的配置。


b.假设我们的restfulurl均已testrest开头,则主urls.py文件做如下配置:

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'djangolearn.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),


    url(r'^testrest/', include('app.urls')),
)

即以testrest开头的url均转给应用"app"进行处理


c.app的urls.py的配置如下:

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^getUserList/$', 'app.views.getUserList'),
    url(r'^setUser/$', 'app.views.setUser'),
)

这就是我们的主人翁,一个获取用户列表的方法,一个设置用户的方法。


d.views.py中的代码如下:

from django.shortcuts import render,render_to_response
from django.template import RequestContext
from rest_framework import request
from rest_framework import permissions
from rest_framework.response import Response
from rest_framework.decorators import api_view, permission_classes
import json

@api_view(http_method_names=['GET'])
@permission_classes((permissions.AllowAny,))
def getUserList(request):
    return Response([
        {"name":"admin","password":"123"},
        {"name":"auditor","password":"456"},
    ])

@api_view(http_method_names=['POST'])
@permission_classes((permissions.AllowAny,))
def setUser(request):
    return Response({
        "data":request.data,
        "test":"111"
    })

可以看到,getUserList为GET请求;而setUser为POST请求。


e.用restclient工具分别发送请求效果如下:

GET请求http://localhost:8082/testrest/getUserList/:


POST请求http://localhost:8082/testrest/setUser/



强调两点:

1.我这个只是个示例,所以permission设为了any即任意人都可以发送rest请求;但实际使用场景中,应该用restframework的校验模块的

2.示例中逻辑都在views.py中,实际场景中views中的逻辑不易过多;数据的处理应该主要是在models.py中处理,然后views调用models.py中的方法,得到数据结果,最后进行返回

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值