Python Django+Vue前后端分离开发

  1. 创建Django项目
django-admin startproject ulb_manager
  1. 创建应用(backend)
cd ulb_manager
python manage.py startapp backend
  1. 使用vue-cli创建vue项目frontend
vue-init webpack frontend
  1. 使用vue进行项目开发,项目开发完后打包
cd frontend
cnpm run build

打包后,会生成dist文件,内有index.html和文件夹static
5. 配置Django指向index.html
配置ulb_manager/urls.py文件

from django.views.generic import TemplateView  #添加

ulpatterns = [
	path('admin/',admin.site.urls),
	path('index/',TemplateView.as_view(template_name="index.html")), #添加
]

配置ulb_manager/settings.py文件

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        # 'DIRS': [],
        'DIRS': ['frontend/dist'],   # 添加
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
 
STATICFILES_DIRS = [    # 添加
    os.path.join(BASE_DIR, "frontend/dist/static"),
]
  1. 启动Django项目,访问/index便能打开打包好的vue项目
python manage.py runserver

在这里插入图片描述
7. Django进行get/post请求
在Django的backend目录下新建urls.py文件

from django.urls import path
from . import views
urlpatterns = [
	path('testapi',vies.testapi, name = 'testapi')
]

修改backend目录下的views.py文件

from django.shortcuts import render
 
# Create your views here.
from django.http import HttpResponse
import json
 
# 解决前端post请求 csrf问题
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
 
def testapi(request):
	print(request)
	print(request.method)
	if request.method == "GET":
		print(request.GET.get('aa'))
		resp = {'errorcode': 100, 'type': 'Get', 'data': {'main': request.GET.get('aa')}}
		return HttpResponse(json.dumps(resp), content_type="application/json")
	else:
		print(request.POST)
		print(request.body)
		str1=str(request.body, encoding = "utf-8")  
		data=eval(str1)
		print(data)
		print(data['aa'])
		print(type(request.body))
		resp = {'errorcode': 100, 'type': 'Post', 'data': {'main': data['aa']}}
		return HttpResponse(json.dumps(resp), content_type="application/json")
  1. 配置ulb_manager/urls.py文件
from django.contrib import admin
from django.urls import include, path  # 添加
from django.views.generic import TemplateView
 
 
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', TemplateView.as_view(template_name="index.html")),
	path('api/', include('backend.urls'))   #添加
]

在这里插入图片描述
9. 在vue中请求接口
配置axios
https://blog.csdn.net/qq_39785489/article/details/80111141

在组件中使用

import {post,get,patch,put} from '../http'
 
export default {
  name: 'HelloWorld',
  mounted() {
    // get('http://localhost:8000/api/testapi?aa=bb')
    //   .then((response) => {
    //     console.log(response)
    // })
    post('http://localhost:8000/api/testapi',{"aa": 'bb'})
      .then((response) => {
        console.log(response)
        console.log(response.data.main)
    })
  },
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  }
}

在这里插入图片描述

请求成功

转载https://blog.csdn.net/qq_39785489/article/details/82751868

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值