为什么最后运行不出来像视频中那样的效果呢?

jike_2791694 Django 开发——API ... 最后由 上海小胖 于2016年12月11日回复

  • 1 回答
  • 1.9k 浏览

我按照老师的代码打了一遍,而且也更正了评论区中所提出来的错误。但是为什么我输入book1时就会报一大堆错呢?

1i5xdowf74r1d.png

而且http://127.0.0.1:8000/book/1  这个根本访问不了。。

views.py

from django.http import HttpResponse
from rest_framework.renderers import JSONRenderer
from lesson.models import Book
from lesson.serializers import BookSerializer

# Create your views here.
class JSONResponse(HttpResponse):
    def __init__(self, data, **kwargs):
        # 这个的作用就是将数据序列化成JSON数据
        content = JSONRenderer().render(data)
        # 这个的作用是为了将数据的格式限定为JSON格式的
        kwargs['content_type'] = 'application/json'
        # 然后呢,我们去进行覆盖一下原来的初始化类
        super(JSONResponse, self).__init__(content, **kwargs)

def book_list(request, num):
    print("Num is " % num)
    if request.method=='GET':
        b = Book.objects.get(id=num)
        # 然后将b object加入到写好的序列化器中
        ser = BookSerializer(b)
        # print(ser)
        return JSONResponse(ser.data)

serializers.py

# -*- coding: utf-8 -*-

# 在这里主要是写一下数据的序列化和反序列化
from lesson.models import Book
from rest_framework import serializers

class BookSerializer(serializers.Serializer):
    class Meta:
        model = Book
        field = ('name', 'title', 'author')

    def restore_object(self, attrs, instance=None):
        if instance:
            instance.title = attrs['title']
            instance.name = attrs['name']
            instance.author = attrs['author']
            return instance

        return Book(**attrs)

urls.py

from django.conf.urls import include, url, patterns
from django.contrib import admin
from lesson.views import *

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^book/(d+)', book_list)
]

因为其他的都和老师的一样了,所以就不贴出来了。

希望能够得到解答!!!

  • 上海小胖 2016年12月11日 回答 #1楼
  • 19vlx55056v3d.png

    检查一下你的代码,17行,有个类型不是字符串的被拼接了。

  • 0 评论