python 记录Django与Vue前后端分离项目搭建

python 记录Django与Vue前后端分离项目搭建

参考链接:

https://blog.csdn.net/liuyukuan/article/details/70477095

1. 安装python与vue

2. 创建Django项目

django-admin startproject ulb_manager

3. 进入项目并创建名为backeng的app

  1. cd ulb_manager

  2.  

    python manage.py startapp backend

4. 使用vue-cli创建vue项目 frontend

vue-init webpack frontend

5.打包vue目录

  1. cd frontend

  2.  

    npm install

  3.  

    npm run build

打包完成后会生成dist文件 内有index.html和文件夹static

6.配置Django指向index.html

配置ulb_manager/urls.py文件

  1.  

    from django.views.generic import TemplateView // 添加

  2.  

  3.  

    urlpatterns = [

  4.  

    path(‘admin/‘, admin.site.urls),

  5.  

    path(‘index/‘, TemplateView.as_view(template_name="index.html")), // 添加

  6.  

    ]

配置ulb_manager/settings.py文件

  1. TEMPLATES = [

  2.  

    {

  3.  

    ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘,

  4.  

    # ‘DIRS‘: [],

  5.  

    ‘DIRS‘: [‘frontend/dist‘], // 添加

  6.  

    ‘APP_DIRS‘: True,

  7.  

    ‘OPTIONS‘: {

  8.  

    ‘context_processors‘: [

  9.  

    ‘django.template.context_processors.debug‘,

  10.  

    ‘django.template.context_processors.request‘,

  11.  

    ‘django.contrib.auth.context_processors.auth‘,

  12.  

    ‘django.contrib.messages.context_processors.messages‘,

  13.  

    ],

  14.  

    },

  15.  

    },

  16.  

    ]

  17.  

  18.  

    STATICFILES_DIRS = [ // 添加

  19.  

    os.path.join(BASE_DIR, "frontend/dist/static"),

  20.  

    ]

7. 这时启动Django项目 并访问/index便能打开打包好的vue项目

python manage.py runserver

8. Django添加接口

在Django的backend目录下新建urls.py文件

  1. from django.urls import path

  2.  

  3.  

    from . import views

  4.  

  5.  

    urlpatterns = [

  6.  

    path(‘testapi‘, views.testapi, name=‘testapi‘),

  7.  

    ]

修改backend目录下views.py文件

  1. from django.shortcuts import render

  2.  

  3.  

    # Create your views here.

  4.  

    from django.http import HttpResponse

  5.  

    import json

  6.  

  7.  

    # 解决前端post请求 csrf问题

  8.  

    from django.views.decorators.csrf import csrf_exempt

  9.  

    @csrf_exempt

  10.  

  11.  

    def testapi(request):

  12.  

    print(request)

  13.  

    print(request.method)

  14.  

    if request.method == "GET":

  15.  

    print(request.GET.get(‘aa‘))

  16.  

    resp = {‘errorcode‘: 100, ‘type‘: ‘Get‘, ‘data‘: {‘main‘: request.GET.get(‘aa‘)}}

  17.  

    return HttpResponse(json.dumps(resp), content_type="application/json")

  18.  

    else:

  19.  

    print(request.POST)

  20.  

    print(request.body)

  21.  

    str1=str(request.body, encoding = "utf-8")

  22.  

    data=eval(str1)

  23.  

    print(data)

  24.  

    print(data[‘aa‘])

  25.  

    print(type(request.body))

  26.  

    resp = {‘errorcode‘: 100, ‘type‘: ‘Post‘, ‘data‘: {‘main‘: data[‘aa‘]}}

  27.  

    return HttpResponse(json.dumps(resp), content_type="application/json")

配置ulb_manager/urls.py文件

  1. from django.contrib import admin

  2.  

    from django.urls import include, path // 添加

  3.  

    from django.views.generic import TemplateView

  4.  

  5.  

  6.  

    urlpatterns = [

  7.  

    path(‘admin/‘, admin.site.urls),

  8.  

    path(‘index/‘, TemplateView.as_view(template_name="index.html")),

  9.  

    path(‘api/‘, include(‘backend.urls‘)) // 添加

  10.  

    ]

这时接口就可以访问到了

9. 开发环境跨域

前端编辑时依旧使用npm run dev 这时请求Django接口可能会出现跨域问题

安装django-cors-headers

pip install django-cors-headers

配置ulb_manager/settings.py文件

  1. MIDDLEWARE = [

  2.  

    ‘django.middleware.security.SecurityMiddleware‘,

  3.  

    ‘django.contrib.sessions.middleware.SessionMiddleware‘,

  4.  

    ‘corsheaders.middleware.CorsMiddleware‘, // 添加

  5.  

    ‘django.middleware.common.CommonMiddleware‘,

  6.  

    ‘django.middleware.csrf.CsrfViewMiddleware‘,

  7.  

    ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,

  8.  

    ‘django.contrib.messages.middleware.MessageMiddleware‘,

  9.  

    ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,

  10.  

    ]

  11.  

  12.  

    CORS_ORIGIN_ALLOW_ALL = True // 添加

10. 在vue中请求接口

配置axios

https://blog.csdn.net/qq_39785489/article/details/80111141

在组建中使用

  1. import {post,get,patch,put} from ‘../http‘

  2.  

  3.  

    export default {

  4.  

    name: ‘HelloWorld‘,

  5.  

    mounted() {

  6.  

    // get(‘http://localhost:8000/api/testapi?aa=bb‘)

  7.  

    // .then((response) => {

  8.  

    // console.log(response)

  9.  

    // })

  10.  

    post(‘http://localhost:8000/api/testapi‘,{"aa": ‘bb‘})

  11.  

    .then((response) => {

  12.  

    console.log(response)

  13.  

    console.log(response.data.main)

  14.  

    })

  15.  

    },

  16.  

    data () {

  17.  

    return {

  18.  

    msg: ‘Welcome to Your Vue.js App‘

  19.  

    }

  20.  

    }

  21.  

    }

请求成功

原文地址:https://www.cnblogs.com/fengbo123/p/10966561.html

时间: 2024-11-08 13:45:16

python 记录Django与Vue前后端分离项目搭建的相关文章

ASP.NET WebApi+Vue前后端分离之允许启用跨域请求

前言: 这段时间接手了一个新需求,将一个ASP.NET MVC项目改成前后端分离项目.前端使用Vue,后端则是使用ASP.NET WebApi.在搭建完成前后端框架后,进行接口测试时发现了一个前后端分离普遍存在的问题跨域(CORS)请求问题.因此就有了这篇文章如何启用ASP.NET WebApi 中的 CORS 支持. 一.解决Vue报错:OPTIONS 405 Method Not Allowed问题: 错误重现: index.umd.min.js:1 OPTIONS http://local

docker-compose 部署 Vue+SpringBoot 前后端分离项目

一.前言 本文将通过docker-compose来部署前端Vue项目到Nginx中,和运行后端SpringBoot项目 服务器基本环境: CentOS7.3 Dokcer MySQL 二.docker-compose 部署Vue+SpringBoot 前后端分离项目 整体项目配置结构,这里在不影响原来项目的结构,因此将所有配置文件都提出来存放到docker文件夹内了,但注意docker-compose文件须放到项目总的根目录下哦! 1.新增后端所需配置文件api-Dockerfile # 指定基

基于Vue的前后端分离项目实践

一.为什么需要前后端分离 1.1什么是前后端分离  前后端分离这个词刚在毕业(15年)那会就听说过,但是直到17年前都没有接触过前后端分离的项目.怎么理解前后端分离?直观的感觉就是前后端分开去做,即功能和职责上的一种划分,前端负责页面的渲染,部分页面交互的逻辑,然后通过网络请求与后端进行数据的交互:后端则着重关注业务逻辑的处理,直接操控数据库. 1.2前后端未分离前(1)jsp + servlet 开发模式: JSP页面:负责视图层的渲染及交互,内部可以嵌入java 代码,在某些场景下开发起来比

Springboot2 Vue 前后端分离 整合打包 docker镜像

项目使用springboot2和Vue前后端分离开发模式,再整合,容器化部署. 主要说明下大体的流程,扫除心里障碍,期间遇到的问题请自行解决. 首先说下Vue打包: 1.在Vue项目目录下运行命令打包:npm run build:prod --report 生成需要使用的dist文件,打包后会出现在项目目录下.(目录结构可能会不同) 按照如下方式整合到springboot项目中,resources在main目录下. (结构不同的话)一样拆到static目录下,static下面直接跟img.css

七个开源的 Spring Boot 前后端分离项目,一定要收藏!

前后端分离已经在慢慢走进各公司的技术栈,根据松哥了解到的消息,不少公司都已经切换到这个技术栈上面了.即使贵司目前没有切换到这个技术栈上面,松哥也非常建议大家学习一下前后端分离开发,以免在公司干了两三年,SSH 框架用的滚瓜烂熟,出来却发现自己依然没有任何优势! 其实前后端分离本身并不难,后段提供接口,前端做数据展示,关键是这种思想.很多人做惯了前后端不分的开发,在做前后端分离的时候,很容易带进来一些前后端不分时候的开发思路,结果做出来的产品不伦不类,因此松哥这里给大家整理了几个开源的前后端分离项

Docker环境下的前后端分离项目部署与运维(一)项目简介及环境要求

项目简介 本教程将从零开始部署一个前后端分离的开源项目,利用docker虚拟机的容器技术,采用分布式集群部署,将项目转换成为高性能.高负载.高可用的部署方案.包括了MySQL集群.Redis集群.负载均衡.双机热备等等. 部署图 所用到的主流技术 Docker容器.前后端集群.MySQL集群.Redis集群.Haproxy负载均衡.Nginx负载均衡.Keepalived实现双机热备 前后端分离项目部署图 前后端分离项目开源框架介绍 本次教程所采用的前后端分离的项目开源框架是人人网的renren

Aspnet前后端分离项目手记(二)关于token认证

在前后端分离的项目中,首先我们要解决的问题就是身份认证 以往的时候,我们使用cookie+session,或者只用cookie来保持会话. 一,先来复习一下cookie和session 首先我们来复习一下在aspnet中cookie和session的关系,做一个简单试验 这是一个普通的view没有任何处理 可以看到,没有任何东西(cookie),然后当我们写入一个session之后 \ 会发现多了一个名为ASP.NET_SessionId的cookie.我们都知道在aspnet中,session

《Spring Boot 入门及前后端分离项目实践》系列介绍

课程计划 课程地址点这里 本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 个部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 项目实践开发.Spring Boot 介绍.前后端分离.API 规范等内容旨在让读者更加熟悉 SpringBoot 及企业开发中需要注意的事项并具有使用 SpringBoot 技术进行基本功能开发的能力:这最后的项目实战为课程的主要部分,我会带着大家实际的开发一个前后端分离的 Spring Boot 实践项目,

Aspnet Mvc 前后端分离项目手记(二)关于token认证

在前后端分离的项目中,首先我们要解决的问题就是身份认证 以往的时候,我们使用cookie+session,或者只用cookie来保持会话. 一,先来复习一下cookie和session 首先我们来复习一下在aspnet中cookie和session的关系,做一个简单试验 这是一个普通的view没有任何处理 可以看到,没有任何东西(cookie),然后当我们写入一个session之后 会发现多了一个名为ASP.NET_SessionId的cookie.我们都知道在aspnet中,session是保