码迷,mamicode.com
首页 > 其他好文 > 详细

虚拟环境新建项目 rest framework

时间:2018-08-01 22:25:02      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:turn   ror   pos   cfile   cbv   required   价值观   mod   新建文件夹   

新建文件夹
mkdir project1
cd project1


新建虚拟环境
virtualevn env
cd到project1的bin里
激活虚拟环境
source activate

在虚拟环境中安装依赖
pip install django==1.11.11 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install djangorestframework

序列化

serializers只做一件事情,json化model对象

首先在app01创建一个serializers.py来编写序列化相关的代码:

from app01.models import Comment,Article,School
from rest_framework import serializers
from rest_framework.validators import ValidationError

class CommentSerializer(serializers.ModelSerializer):

#相当于form组件的勾子 def validate_content(self,value):
if in value: raise ValidationError(不符合社会主义核心价值观) else: return value class Meta: model = Comment fields = __all__‘,所有字段 extra_kwargs = { content:{ error_message:{ required:内容不能为空, } } } class ArticleModelSerializer(serializers.ModelSerializer): class Meta: model = Article fields = __all__ #HyperlinkedModelSerializer:建立超链接关系 class ArticleHyperLinkedSerializer(serializers.HyperlinkedModelSerializer): school = serializers.HyperlinkedModelSerializer(view_name=school_detail1111, lookup_url_kwarg=id) class Meta: model = Article fields = {id,title,type,school} class SchoolSerializer(serializers.ModelSerializer): class Meta: model = School fields = __all__

编写视图文件views.py

from django.shortcuts import render,HttpResponse
from django.http import JsonResponse
from app01 import models
from django import views
from rest_framework import serializers
from rest_framework.views import APIView
from rest_framework.response import Response
from app01 import serializers as app01_serializers

# Create your views here.

class Comment(APIView):


    def get(self,request):
        res = {code:0}
        # 数据
        all_comment = models.Comment.objects.all()
        #序列化
        ser_obj = app01_serializers.CommentSerializer(all_comment,many=True)
        res[data] = ser_obj.data
        return Response(res)

    def post(self,request):
        res = {code:0}
        # 去提交的数据
        comment_data = self.request.data
#        对用户提交的数据做校验
        ser_obj = app01_serializers.CommentSerializer(data=comment_data)

        if ser_obj.is_valid():
            ser_obj.save()
#             表示数据没问题可以创建
        else:
            # 表示数据有问题
            res[code] = 1
            res[error] = ser_obj.errors
        return HttpResponse(创建新评论)

    def put(self,request):
        # rest framework封装好的request
        print(self,request)
        print(self.request.data)
        return HttpResponse(修改评论)

    def delete(self,request):
        print(self.request)
        print(self.request.data)
        return HttpResponse(删除评论)


# 文章CBV
class Article(APIView):

    def get(self,request):

        res = {code:0}
        all_article = models.Article.objects.all()
        ser_obj = app01_serializers.ArticleHyperLinkedSerializer(
            all_article,many=True,context={request:request}
        )
        res[data] = ser_obj.data
        return Response(res)

    def post(self,request):
        res = {code:0}
        ser_obj = app01_serializers.ArticleHyperLinkedSerializer(
            data=self.request.data)
        if ser_obj.is_valid():
            ser_obj.save()
        else:
            res[code] = 1
            res[error]=ser_obj.errors
        return Response(res)


class ArticleDetail(APIView):


    def get(self,request,pk):
        res = {code:0}
        article_obj = models.Article.objects.filter(pk=pk).first()
#         序列化
        ser_obj = app01_serializers.ArticleHyperLinkedSerializer(article_obj,context={request:request})
        res[data]=ser_obj.data
        return Response(res)
    

class SchoolDetail(APIView):
    
    def get(self,request,id):
        res = {code:0}
        school_obj = models.School.objects.filter(pk=id).first()
        ser_obj = app01_serializers.SchoolSerializer(school_obj,context={request:request})
        res[data] = ser_obj.data
        return Response(res)
        
        

 app01/urls.py

from django.conf.urls import url
from app01 import views

urlpatterns = [
    url(rarticle/, views.Article.as_view()),
    url(rarticle/(?P<pk>\d+), views.ArticleDetail.as_view(), name=article-detail),
    url(rschool/(?P<id>\d+), views.SchoolDetail.as_view(), name=school-detail111),

    # 评论
    # url(rcomment_list/, ),
    # url(radd_comment/, ),
    # url(rdelete_comment/, ),
    # url(redit_comment/, ),
    url(rcomment/, views.Comment.as_view()),
]

 settings.py

INSTALLED_APPS = [
    django.contrib.admin,
    django.contrib.auth,
    django.contrib.contenttypes,
    django.contrib.sessions,
    django.contrib.messages,
    django.contrib.staticfiles,
    app01.apps.App01Config,
    rest_framework
]

 

虚拟环境新建项目 rest framework

标签:turn   ror   pos   cfile   cbv   required   价值观   mod   新建文件夹   

原文地址:https://www.cnblogs.com/kateli/p/9403676.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!