Django restframework入门示例
2015-12-16 00:44
501 查看
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中的代码如下:
可以看到,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中的方法,得到数据结果,最后进行返回
官网地址为: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中的方法,得到数据结果,最后进行返回
相关文章推荐
- ZOJ 1045 HangOver
- django celery
- django signal
- google reCaptcha的工作方式理解
- org.hibernate.proxy.HibernateProxy Forgot to register a type adapter?
- POJ 2762 Going from u to v or from v to u?(强连通分量+拓扑排序)
- Google TensorFlow 机器学习框架介绍和使用
- ubuntu修改hosts文件 跳过DNS解析实现服务器定向登录(google,FB,TW等)
- Go语言编程-初级
- Intellij IDEA安装golang插件
- Django知识点总结(三)
- Google glog error LNK2001: unresolved external symbol "__declspec(dllimport) int fLI::FLAGS_XXXX 错误的
- golang中interface判断nil问题
- 【django入门教程】Django的安装和入门
- google的guava库 Spliiter使用
- sudo apt-get install g++ 出现“g++ : Depends: g++-4.8 (>= 4.8.2-5~) but it is not going to be installed
- Django model字段类型清单
- (原创)googlemap开发(一)
- Beam Search Algorithm
- Category - 4