Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1514317
  • 博文数量: 230
  • 博客积分: 474
  • 博客等级: 下士
  • 技术积分: 1955
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-19 18:40
文章分类

全部博文(230)

文章存档

2020年(3)

2019年(3)

2018年(12)

2017年(13)

2016年(11)

2015年(55)

2014年(74)

2013年(39)

2012年(2)

2011年(18)

我的朋友

分类: Python/Ruby

2017-04-07 17:27:38

http://blog.csdn.net/nghuyong/article/details/51278330

1.准备工作

  • 安装django框架
  • 安装django-rsetful 框架
pip install djangorestframework
  • 1
  • 1

2.一个小demo

2.1创建django工程

 django admin startproject restful
    django admin startapp demo
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

2.2配置restful环境

 修改restful/settings.py
    在INSTALLED_APPS 添加 'rest_framework'
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

2.3编写model层 /demo/model.py

 from django.db import models # Create your models here. class User(models.Model): username = models.CharField(max_length=20,blank=True)
        password = models.CharField(max_length=20,blank=True) def __str__(self): return self.username
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.4配置数据库

 python manage.py makemigratons
    python manage.py migrate
    python manage.py createsuperuser
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

2.5配置后台管理 /demo/admin.py

 from django.contrib import admin # Register your models here. from demo.models import User

    admin.site.register(User)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

此时登陆后台添加一些数据

(图片不清楚可按住Ctrl+鼠标滚轮放大)

2.6编写序列化模块 /demo/serializer.py

 # author: HuYong # coding=utf-8 from rest_framework import serializers from demo.models import User class UserSerializer(serializers.ModelSerializer): class Meta: model = User
            fields = ("id","username","password")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

序列化联通json与模型层

2.7编写url

2.7.1根url restful/url.py

 from django.conf.urls import include, url from django.contrib import admin

    urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
        url(r'^api/demo/',include('demo.urls')),
    ]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.7.2APP URL demo/urls.py

 # author: HuYong # coding=utf-8 from django.conf.urls import url from demo import views

    urlpatterns = [
        url(r'^user/$',views.User_list),
        url(r'^user/(?P[0-9]+)/$',views.User_detial),
    ]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2.8编写views层 demo/views.py

 import json from django.shortcuts import render # Create your views here. from rest_framework import status from rest_framework.decorators import api_view from rest_framework.response import Response from demo.models import User from demo.serializer import UserSerializer @api_view(['GET','POST']) def User_list(request): if request.method=="GET":
            users = User.objects.all()
            serializer = UserSerializer(users,many=True) return Response(serializer.data) elif request.method == 'POST': print request.body
            serializer = UserSerializer(data=json.loads(request.body)) if serializer.is_valid():
                serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @api_view(['GET', 'PUT', 'DELETE']) # def User_detial(request,pk): try:
            user = User.objects.get(pk=pk) except User.DoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == "GET":
            serializer = UserSerializer(user) return Response(serializer.data) elif request.method == "PUT":
            serializer = UserSerializer(user,data=json.loads(request.body)) if serializer.is_valid():
                serializer.save() return Response(serializer.data) else: return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST) elif request.method == "DELETE":
            user.delete() return Response(status=status.HTTP_204_NO_CONTENT)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

2.9测试

2.9.1获取用户列表

  • 浏览器访问

    这个浏览器访问的界面
  • 通过postman来测试,返回的是json数据

2.9.2新增数据

  • 通过postman来测试
  • 简单设置

  • 返回的数据:
  • 此时获取用户列表栏

2.9.3对单个用户的操作

  • URL (id为4的用户)
  • 获取用户信息(GET)
  • 修改用户信息(PUT)

  • 删除用户信息(DELETE)
阅读(1048) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~