1.创建一个测试项目
 
1.1 创建项目和APP
 
'''1.创建项目和APP'''
django-admin startproject BookManage   # 创建项目
python manage.py startapp books     # 创建APP
 
'''2.在settings中注册books模型'''
INSTALLED_APPS = [
  'books.apps.BooksConfig'
]
# 注:pycharm无法联想,需要把apps文件夹设置为源根
 
'''3.urls.py中添加路由'''
urlpatterns = [
  path('books/', include('books.urls')),
]
 
'''4.books/urls.py中添加子路由'''
from django.urls import path
urlpatterns = [
 
]
 
2.配置跨域
 
2.1 跨域原理
 
1. 首先浏览器安全策略限制js ajax跨域访问服务器
2. 如果服务器返回的头部信息中有当前域:
 
// 允许 http://localhost:8080 这个网站打开的页面中的js访问我
Access-Control-Allow-Origin: http://localhost:8080
 
// 允许携带cookie访问我
Access-Control-Allow-Credentials: true
 
那么, 浏览器可以让js 请求该服务器

2.2 cors设置
 
1. 安装包
pip install django-cors-headers
 
2. 注册应用
INSTALLED_APPS = [
  ...
  # 添加 django-cors-headers 使其可以进行 cors 跨域
  'corsheaders'
]
 
3. 添加中间件
MIDDLEWARE = [
  # 放在中间件第一个
  'corsheaders.middleware.CorsMiddleware',
  ...
]
 
4. 设置
# CORS跨域请求白名单设置
CORS_ORIGIN_WHITELIST = (
  'http://127.0.0.1:8080',
  'http://localhost:8080',
)
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
 
3.登录接口
 
3.1 urls.py 中配置路由
urlpatterns = [
  path('login/', views.login),
]
 
3.2 user/views.py 中写一个login视图函数
 
from django.http import JsonResponse
import json
 
def login(request):
  body_json = request.body.decode()
  body_dict = json.loads(body_json)
  name = body_dict.get('name')
  pwd = body_dict.get('pwd')
  if not all([name, pwd]):
    resp = {
      "code": 999,
      "msg": '信息不全'
    }
    return JsonResponse(resp)
 
if name == 'zhangsan' and pwd == '1234':
  data = {
    "code": 0,
    "msg": '登录成功',
    "data": {
      "id": 1,
      "name": '张三',
      "age": 18
    }
  }
  resp = JsonResponse(data)
  return resp
else:
  data = {
    "code": 999,
    "msg": '用户名密码不正确'
  }
  resp = JsonResponse(data)
  return resp
 
3.3 测试接口
 
http://127.0.0.1:8000/login/
 
{
  "name":"zhangsan",
  "pwd":"1234"
}
 

02.django配置跨域并开发测试接口的更多相关文章

  1. django配置跨域并开发测试接口

    1.创建一个测试项目 1.1 创建项目和APP django-admin startproject BookManage # 创建项目 python manage.py startapp books ...

  2. day3(django配置跨域)

    1.跨越原理 1. 首先浏览器安全策略限制js ajax跨域访问服务器 2. 如果服务器返回的头部信息中有当前域: // 允许 http://localhost:8080 这个网站打开的页面中的js访 ...

  3. django允许跨域请求配置

    django允许跨域请求配置 下载corsheader pip install django-cors-headers 修改setting.py中配置 在INSTALLED_APPS中增加corshe ...

  4. vue开发环境配置跨域,一步到位

    本文要实现的是:使用vue-cli搭建的项目在开发时配置跨域,上线后不做任何任何修改,接口也可以访问,前端跨域解决方案 production:产品 生产环境 development:开发 开发环境 1 ...

  5. Django 处理跨域的配置、前台处理ajax

    一. Django处理跨域 跨域的处理方式有很多,使用最多的就是CORS(跨域资源共享),接下来大致提一下django中处理跨域的配置. 首先安装django-cors-headers模块: pip ...

  6. System.Web.Http.Cors配置跨域访问的两种方式

    System.Web.Http.Cors配置跨域访问的两种方式 使用System.Web.Http.Cors配置跨域访问,众多大神已经发布了很多文章,我就不在详细描述了,作为小白我只说一下自己的使用心 ...

  7. WebApi使用cors配置跨域问题

    1.首先安装CORS,在WebApiCors项目上面使用Nuget搜索“microsoft.aspnet.webapi.cors”,安装第一个 2.当我们安装这个包之后,现有的packages目录下会 ...

  8. ASP.NET MVC4应用程序配置跨域访问

    开发框架是使用webapi做后台,HTML5做前台,通过ajax调用webapi后台,返回json结果. 用的编译器是visual Studio2013,下面是配置方法 1.web.config文件 ...

  9. nginx配置跨域、gzip加速、代理详细讲解

    1.配置跨域 这个很简单,直接打开配置nginx.conf ,在http下配置下面三行代码:当然如果你是想某一个虚拟主机下跨域,那就在哪个server下面添加 add_header Access-Co ...

随机推荐

  1. MySQL 5.7二进制日志

    简介 二进制日志是MySQL服务器用来记录数据修改事件的,比如INSERT.UPDATE.DELETE等会导致数据发生变化的语句,SELECT语句不会被记录在内.MySQL必须先执行完一条语句才能知道 ...

  2. centos7 下 docker 安装

    前提: 目前,CentOS 仅发行版本中的内核支持 Docker. Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上. Docker 运行在 CentOS- ...

  3. 【奇淫巧技】sqlmap绕过过滤的tamper脚本分类汇总

    sqlmap绕过过滤的tamper脚本分类汇总

  4. 不会吧,这也行?iOS后台锁屏监听摇一摇

    目录 背景介绍 探索过程 其他 APP 有没有类似功能 系统提供的摇一摇回调能否满足 其他方法能否实现 利用 CoreMotion 框架,监听加速计原始数据 通过加速计监听摇一摇 控制器相关逻辑和代码 ...

  5. IntelliJ IDEA 调试 Java 8 Stream,实在太香了!

    前段时间,栈长发布了一篇关于 Java 8 Optional.map 的实用文章,留言区就有的人说 Java 8 的语法糖不方便调试,还要视情况使用. 留言区也有人说 IntelliJ IDEA 早已 ...

  6. vue+elmentUI项目的正则判断

    一.为了方便重复利用管理,我创建一个regExp.ts文件来管理正则的表达式,内容如下: 1 /* eslint-disable */ 2 const phoneNumberRegExp = /^[1 ...

  7. Android作业10/07

    1.多个Activity界面实现数据的传递 <?xml version="1.0" encoding="utf-8"?> <androidx. ...

  8. ORA-00001: unique constraint (string.string) violated 违反唯一约束条件(.)

    ORA-00001: unique constraint (string.string) violated   ORA-00001: 违反唯一约束条件(.) Cause: An UPDATE or I ...

  9. 超详细的TCP、Sokcket和SuperSocket与TCP入门指导

    前言 本文主要介绍TCP.Sokcket和SuperSocket的基础使用. 创建实例模式的SuperSocket服务 首先创建控制台项目,然后Nuget添加引用SuperSocket.Engine. ...

  10. 微信小程序适配iPhone X

    1.获取设备型号 App({ // 全局数据 globalData: { // 其他数据定义 ... isIPX: false, // 当前设备是否为 iPhone X }, // 小程序启动入口 o ...