Django restframework

 

 

 

 

1.知识点补充:什么是编程?

  -编程就是数据结构和算法的结合。

 

2.什么是rest?

我们将要做的前后端分离的项目会用到它,可以用 json 来交换数据。REST 不是什么具体的软件或者代码,而是一种思想。这么说就太抽象了,REST 刚出来的时候是以论文的形式提出的,是一种设计的形式。

  -2.1 rest下的URL?

    URL唯一代表资源,以http请求来判断用户的行为

  -2.2  URL的设计规范?

    GET:  127.0.0.1:8000/books/       #获取所有的数据     返回[{},{},{}]

    GET:  127.0.0.1:8000/books/{id}   #获取单条数据       单条数据

    POST:  127.0.0.1/books/     #增加数据                 添加成功的数据{}

    PUT:  127.0.0.1:8000/books/{id}   #修改数据    更新完成的数据{}

    DELETE:  127.0.0.1:8000/books/{id}   #删除数据  返回   '    '

 

3.  APIView  

  -3.1使用:

    1.  下载:   pip install djangorestframework

    2.  导入模块:  from  rest_framework.views  import  APIView

    3.CBV继承APIView

4.DRF解析器流程图

 

 

 

 

 

5.代码:

url:

from django.urls import path, include, re_path
from classbasedview import views

urlpatterns = [
    re_path('login/$', views.LoginView.as_view()),
    re_path('courses/$', views.CourseView.as_view()),
]

view

from django.shortcuts import render, HttpResponse
from django.views import View
from django.core.handlers.wsgi import WSGIRequest

from rest_framework.views import APIView
from rest_framework.parsers import FormParser, JSONParser

import json

from .models import Course

# Create your views here.


class LoginView(APIView):
    # parser_classes = [FormParser]
    def get(self, request):
        return render(request, 'login.html')

    def post(self, request):

        request.data
        return HttpResponse("Ok")


class CourseView(APIView):
    def get(self, request):
        course_list = list()

        for course in Course.objects.all():
            course = {
                "course_name": course.course_name,
                "description": course.description
            }

            course_list.append(course)

        return HttpResponse(json.dumps(course_list, ensure_ascii=False))



因为json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False:

HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>

    <form action="", method="post" enctype="application/x-www-form-urlencoded">
        {% csrf_token %}
        <p>用户名:<input type="text" name="user"></p>
        <p>密码:<input type="password" name="password"></p>
        <p><input type="submit" value="提交" ></p>
    </form>

    <button class="btn">点击提交Ajax数据</button>
</body>

    <script>
        $('.btn').click(function () {
            $.ajax({
                url: "",
                type: 'post',
                contentType: "application/json",
                data: JSON.stringify({
                    name: "pizza",
                    age: 18
                })
            })
        })
    </script>
</html>

 

posted @ 2018-12-06 19:19  魏三斗  阅读(191)  评论(0编辑  收藏  举报