作用
状态码
服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。
200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
204 NO CONTENT - [DELETE]:用户删除数据成功。
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的。
401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。
django_rest_framework
通过各种method获取或修改后台数据,直接显示在前端,可以是json等其它格式,替代了以前的ajax去后端获取数据只能返回json,还要写model等步骤。
http://www.django-rest-framework.org/tutorial/quickstart/
安装(具体版本请参考 Django-rest-framework.org)
1
2
3
|
pip install djangorestframework
pip install markdown
pip install django
-
filter
|
添加项目
1
2
3
4
|
INSTALLED_APPS
=
[
.......
'rest_framework'
,
]
|
serializer.py
1
2
3
4
5
6
|
from
rest_framework
import
serializers
from
models
import
UserProfile
class
UserSerializer(serializers.HyperlinkedModelSerializer):
class
Meta:
model
=
UserProfile
fields
=
(
'url'
,
'name'
,
'email'
)
|
rest_views.py
1
2
3
4
5
6
7
|
from
rest_framework
import
viewsets
from
models
import
UserProfile
from
serializer
import
UserSerializer
class
UserViewSet(viewsets.ModelViewSet):
queryset
=
UserProfile.objects.
all
()
serializer_class
=
UserSerializer
|
总urls.py,把api的全交给rest_urls.py处理
1
2
3
4
5
6
7
|
from
django.conf.urls
import
include
from
asset
import
rest_urls
urlpatterns
=
[
......
url(r
'^api/'
, include(rest_urls) ),
]
|
rest_urls.py
1
2
3
4
5
6
7
8
9
10
|
from
django.conf.urls
import
url, include
from
rest_framework
import
routers
import
rest_views
router
=
routers.DefaultRouter()
router.register(r
'users'
, rest_views.UserViewSet)
urlpatterns
=
[
url(r
'^'
, include(router.urls)),
url(r
'^api-auth/'
, include(
'rest_framework.urls'
, namespace
=
'rest_framework'
))
]
|
浏览器效果
还能在页面添加数据