开发过程中django和vue项目同时运行
背景
- 大二下学期第一次接触前后端分离,在课程大作业项目中是后端人员,用的django框架,前端朋友是vue框架。当时前后端对接是队友做的,只是听说对接时要把vue打包,我还什么都不懂。
- 大二和大三之间的暑假做了第二个django+vue的项目,我还是后端,这次接触了前后端对接,也接触了服务器部署。对接的方法是队友告知的,把前端
npm run build 一下,生成的dist 文件夹放在后端项目里,设置一下setting.py 。 - 暑期项目对接,让我对
npm run build 这一步耿耿于怀,太慢了,为什么不能直接一起跑呢??平时开发对接,其实还是在帮助调试,没到上线那一步,难以忍受每次build …然而小菜鸡没在网上搜到一起跑的办法,可能是大家觉得这太简单了不必有教程吧我哭???。但我作为小白qwq真的很需要它…摸索出来了决定总结一下qwq拙见
正题
创建项目
-
建立虚拟环境
virtualenv虚拟环境的使用 - 简书 (jianshu.com)这篇解释很详细。
开发项目时如果用本地python进行开发,多项目维护时会有一些缺点:1. 修改此用户的库会影响系统上其他python软件;2. 不能使用某个包的多个版本;因此使用virtualenv维护多个分离的python环境,每个具有自己的库和包的命名空间。
-
虚拟环境下安装django、创建django项目
-
把vue项目创建在django项目根目录下
-
pycharm开发django和vue项目
同时运行
前后端数据对接
跨域问题
-
刚刚两个项目一起运行,数据对接没有问题,还会出现跨域问题,报错如下 Access to XMLHttpRequest at 'xxx' from origin 'xxx' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
-
原因是同源策略限制协议+域名+端口相同,否则容易受到XSS、CSRF等攻击。解决跨域问题有多种方式,我这里采用的是后端解决。
Django+vue跨域问题解决 - 简书 (jianshu.com)
解决Django+Vue前后端分离的跨域问题及关闭csrf验证 - 云+社区 - 腾讯云 (tencent.com)
-
pip install django-cors-headers -
配置settings.py INSTALLED_APPS = [
...
'corsheaders',
...
]
MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = ()
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)
成功~
- 然后就成功啦~撒花撒花
*★,°*:.☆
|