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中的方法,得到数据结果,最后进行返回