python的前后端分离(一):django+原生js实现get请求
一、django新建项目和应用
参考:https://segmentfault.com/a/1190000016049962#articleHeader2
1、创建项目
django-admin startproject dj_e
2、数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #数据库引擎
'NAME': 'dj_e_db', #数据库名
'USER': 'root', #账户名
'PASSWORD': 'password', #密码
'HOST': 'localhost', #主机
'PORT': '3306', #端口
} }
3、在_init_.py添加如下代码
import pymysql
pymysql.install_as_MySQLdb()
4、数据库迁移命令
python manage.py makemigrations
python manage.py migrate
5、创建应用,编写views
ajax与get的后台接口
创建应用register(在这个应用实现get):
python manage.py startapp register
6、在views.py下创建接口,我们先举个简单的例子——hello接口
from django.shortcuts import render, render_to_response
from django.http import JsonResponse # Create your views here.
def hello(request):
return JsonResponse({'result': 200, 'msg': '连接成功'})
7、register目录中新建一个urls.py文件,输入以下代码
from django.conf.urls import url
from . import views urlpatterns = [
url(r'^helloApi$', views.hello, name='hello'),
url(r'^registerPage$', views.registerPage, name='registerPage'),
]
8、在dj_e/urls.py中修改
from django.conf.urls import include, url
from django.contrib import admin urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('register.urls')),
url(r'^register/', include("register.urls")),
]
9、最后打开django的开发服务器,测试一下接口
python manage.py runserver
二、原生js实现异步的get请求
1、进行前后端的分离(ajax的get请求异步)
在根目录创建一个html文件夹,并在里面创建register.html
<script>
function ajaxResponse(xhr, successFunction, falseFunction) {
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
console.log(xhr.status);
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
alert("成功");
successFunction();
} else {
alert("失败" + xhr.status);
falseFunction();
}
}
}
}
</script>
<div id="getHelloApiDiv" style="background: aqua;height: 100px;width: 100px"></div>
<script>
getApiDiv = document.querySelector('#getHelloApiDiv');
xhr = new XMLHttpRequest();
{# getApiDiv.onclick = function () {#}
window.onload = function () {
ajaxResponse(
xhr,
function () {
helloText = JSON.parse(xhr.responseText);
getApiDiv.innerText = helloText.msg;
}, function () {
}
);
xhr.open('get', 'http://localhost:8000/register/helloApi'); //接口写在这里
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=utf-8;');
xhr.send(null);
};
</script>
2、在register/views.py中编写一个返回html的接口,代码如下,注意import了render_to_response方法
from django.shortcuts import render, render_to_response
from django.http import JsonResponse # Create your views here.
def hello(request):
return JsonResponse({'result': 200, 'msg': '连接成功'}) def registerPage(request):
return render_to_response("register.html")
三、解决一些问题
1、django的相关配置
# 注册应用和允许跨域
INSTALLED_APPS = (
...
'register',
'corsheaders',
) # 允许django跨域请求的配置
MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
...
)
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True # 设置模板路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'html')],
... # 数据库配置
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'dj_e_db', # 数据库名
'USER': 'root', # 账户名
'PASSWORD': 'root', # 密码
'HOST': 'localhost', # 主机
'PORT': '3306', # 端口
}
} # 语言和时区配置
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
2、跨域请求
参考:https://www.jianshu.com/p/24945ee1ec05
pip安装django-cors-headers,解决异步跨域被禁言的问题。
需要settings.py 进行配置。
四、效果截图
确定后,
python的前后端分离(一):django+原生js实现get请求的更多相关文章
- 海纳百川无所不容,Win10环境下使用Docker容器式部署前后端分离项目Django+Vue.js
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_179 随着现代化产品研发的不断推进,我们会发现,几乎每个产品线都会包含功能各异的服务,而且服务与服务之间存在也会存在着错综复杂的依 ...
- Win10环境前后端分离项目基于Vue.js+Django+Python3实现微信(wechat)扫码支付流程(2021年最新攻略)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_182 之前的一篇文章:mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能,主要介绍了微信小程序内 ...
- springMVC前后端分离开发模式下支持跨域请求
1.web.xml中添加cors规则支持(请修改包名) <filter> <filter-name>cors</filter-name> <filter-cl ...
- 【转】python+django+vue搭建前后端分离项目
https://www.cnblogs.com/zhixi/p/9996832.html 以前一直是做基于PHP或JAVA的前后端分离开发,最近跟着python风搭建了一个基于django的前后端分享 ...
- python+django+vue搭建前后端分离项目
以前一直是做基于PHP或JAVA的前后端分离开发,最近跟着python风搭建了一个基于django的前后端分享项目 准备工作:IDE,[JetBrains PyCharm2018][webpack 3 ...
- python django框架+vue.js前后端分离
本文用于学习django+vue.js实现web前后端分离协作开发.以一个添加和删除数据库书籍应用为实例. django框架官方地址:https://www.djangoproject.com/ vu ...
- 巨蟒python全栈开发flask8 MongoDB回顾 前后端分离之H5&pycharm&夜神
1.MongoDB回顾 .启动 mongod - 改变data/db位置: --dbpath D:\data\db mongod --install 安装windows系统服务 mongod --re ...
- Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)
Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享) 点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...
- 解决Django+Vue前后端分离的跨域问题及关闭csrf验证
前后端分离难免要接触到跨域问题,跨域的相关知识请参:跨域问题,解决之道 在Django和Vue前后端分离的时候也会遇到跨域的问题,因为刚刚接触Django还不太了解,今天花了好长的时间,查阅了 ...
随机推荐
- 避免在构造函数中调用虚方法(Do not call overridable methods in constructors)
CLR中说道,不要在构造函数中调用虚方法,原因是假如被实例化的类型重写了虚方法,就会执行派生类型对虚方法的实现.但在这个时候,尚未完成对继承层次结构中所有字段的初始化.所以,调用虚方法会导致不可预测的 ...
- 3. CMake 系列 - 分模块编译&安装项目
目录 1. 项目目录结构 2. 相关代码 2.1 add 模块 2.2 sub 模块 2.3 测试模块 2.4 顶层 CMakeLists.txt 3. 编译 & 安装 4. 项目安装基本语法 ...
- ASP.NET MVC 4 (五) 视图
视图引擎与视图 多数情况下控制器action方法返回ViewResult对象,MVC内建action调用器ControllerActionInvoker负责调用控制器action方法并调用视图引擎处理 ...
- 如何使用点击事件弹出一个url的iframe选项卡
在一些前后端对接的接口中,前端需要根据后端返回进行跳转,但是有时候需要跳转的地址是不固定的,需要前端灵活的根据接口进行跳转,于是,url被放在接口中返回,而前端想打开一个新窗口的话就会比较麻烦,因为c ...
- Linux内核 GPIO操作部分API
内核中关于GPIO的操作API主要集中在<linux/of_gpio.h>和<linux/gpio.h>中,前者主要是GPIO直接与设备树相关的操作,在Linux 设备树操作A ...
- LeetCode - 872. Leaf-Similar Trees
Consider all the leaves of a binary tree. From left to right order, the values of those leaves form ...
- 导入日志文件到mysql数据库表
#!/bin/bash #**************************************************************************** #***将/usr/ ...
- Docker详解
一.Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享.管理 Docker 容器的 Docker SaaS 平台 -- Docke ...
- Django model中设置多个字段联合唯一约束
Django中model部分的写法, 参见 unique-together 部分文档. class MyModel(models.Model): field1 = models.CharField(m ...
- 使用python爬虫爬取股票数据
前言: 编写一个爬虫脚本,用于爬取东方财富网的上海股票代码,并通过爬取百度股票的单个股票数据,将所有上海股票数据爬取下来并保存到本地文件中 系统环境: 64位win10系统,64位python3.6, ...