Django(三) Url Api以及跨域问题

· Url api

1 安装rest_framework

pip install django-filter
pip install djangorestframework

2 配置settings
INSTALLED_APPS = [
   ...
   'rest_framework',
   ]
3 编写models
  from rest_framework import serializers
  ...
  class Student(models.Model):
	student_name = models.CharField(max_length=20,verbose_name=u'学生姓名')
  	head_pose_up = models.IntegerField(default=1,verbose_name=u'抬头')

	class Meta:
    	verbose_name = u'学生信息'
    	verbose_name_plural = verbose_name
	def __str__(self): return self.student_name

class StudentSerializer(serializers.ModelSerializer):
        # ModelSerializer和Django中ModelForm功能相似
        # Serializer和Django中Form功能相似
        class Meta:
            model = Student
            # 和"__all__"等价
            fields = ('student_name', 'head_pose_up')
4 编写views
from apps.models import Student,StudentSerializer
from rest_framework.reverse import reverse
from rest_framework.response import Response
from rest_framework.renderers import JSONRenderer
from rest_framework.decorators import api_view
from rest_framework.status import HTTP_201_CREATED,HTTP_400_BAD_REQUEST


@api_view(['GET', 'POST'])
def api_student(request, format=None):
        if request.method == 'GET':
                Stu = Student.objects.all()
                serializer = StudentSerializer(Stu, many=True)
                return Response(serializer.data)

        elif request.method == 'POST':
      

      serializer = StudentSerializer(data=request.data)
            if serializer.is_valid():
                    serializer.save()
                    return Response(serializer.data, status=HTTP_201_CREATED)
            return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
5 编写ulrs
urlpatterns = [
   ...
   path('api-index/',lookface.views.api_student),
   ...
   ]
6 have a look

在这里插入图片描述

· 访问api跨域问题

1 访问

在这里插入图片描述

2 跨域提示,控制台查看

在这里插入图片描述

3 django后端解决,安装Django-cors-headers,配置settings

pip install django-cors-headers

INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
    ]
    
MIDDLEWARE = [  
    
    'corsheaders.middleware.CorsMiddleware',#放到中间件顶部
    ...
    ]
CORS_ORIGIN_ALLOW_ALL = True
4 json数据现在可以获取到了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值