django结合react打包为exe可执行文件详细过程,适用于windows快速部署,迁移无需环境配置

说明

前后端完成后,将react打包后移植到django中,省去tomcat、negix的安装与配置,最后生成可执行文件,这样在对方windows电脑上可以无任何环境直接运行。

前提准备

后端环境:Django==2.2.1
前端:react-app打包生成build,如下:
![
在这里插入图片描述](https://img-blog.csdnimg.cn/c10428000d1a4a948b9f955747e0cb69.png)

详细步骤

1. 在 settings.py 中添加
# 静态资源存放路径
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)  #后面会去掉 先测试
2. 创建 static 文件
3. 在 stati 文件随便放个图片,然后访问,如果可以的话就没问题
http://127.0.0.1:8089/static/logo192.png
4. 创建 templates,随意添加个 html,并在 settings 中配置路径
TEMPLATES = [
    {
      .....
        'DIRS': [(os.path.join(BASE_DIR, 'templates'))],
        ....
    }]
5. 添加返回页面控制,并测试
from django.shortcuts import render
def index(request):
  return render(request,'index.html')
############
path('', index, name='index'),
6. 将前端打包后的文件除 html 之外放入 static 当中
-static
  css
  js
  media
  asset-manifest.json
  favicon.ico
  logo192.png
  logo512.png
  mainifest.json
  robots.txt

在这里插入图片描述

7. 将 html 放入 templates 中并修改路径,没/static/ 前缀的给加上
修改后参考:
<head>
  <meta charset="utf-8" />
  <link rel="icon" href="/static/favicon.ico" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <meta name="theme-color" content="#000000" />
  <meta name="description" content="Web site created using create-react-app" />
  <link rel="apple-touch-icon" href="/static/logo192.png" />
  <link rel="manifest" href="/static/manifest.json" />
  <title>React App</title>
  <script defer="defer" src="/static/js/main.dfa0dc8e.js"></script>
  <link href="/static/css/main.bae4799b.css" rel="stylesheet" />
</head>
8. 404 定向到 html 文件,前端页面的路由跳转交给前端处理,全部重定向到 index.html
#1. settings.py
DEBUG  = False
ALLOWED_HOSTS = ['*']
STATIC_URL = '/static/'
#STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)  #去掉!!!!!!!!!!!!!!!!!!!
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
#2. 添加view
def page_not_found(request, exception, template_name='index.html'):
  return render(request, template_name)
#3. 在urls.py中添加
from django.urls import path,include,re_path
from django.views.static import serve
from django.conf import settings
from django.conf.urls.static import static
handler404 = page_not_found
urlpatterns = [
    #............
    re_path(r'^static/(?P<path>.*)$', serve, {'document_root': settings.STATIC_ROOT}),
]
#4. 执行转移
python manage.py collectstatic
#5. 搞定可测试
9. 打包成 exe 文件
1. pip install pyinstaller
2. pyi-makespec -D manage.py
3. 注意生成的manage.spec
4. manage.spec的data中添加静态资源路径和templates路径
a = Analysis(['manage.py'],
             pathex=[],
             binaries=[],
             datas=[(r'E:\event_project\event_server\static',r'.\static'),(r'E:\event_project\event_server\templates', r'.\templates')],
5. pyinstaller manage.spec 开始打包
6. 打包完成后进入dist/manage下cmd执行manage.exe runserver 即可完成
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Django 项目打包 exe 文件可以使用 PyInstaller 工具,PyInstaller 是一个能够将 Python 代码打包独立的可执行文件的工具。 以下是将 Django 项目打包 exe 文件的步骤: 1. 安装 PyInstaller 你可以使用 pip 安装 PyInstaller: ``` pip install pyinstaller ``` 2. 创建 spec 文件 在 Django 项目的根目录下,执行以下命令创建 spec 文件: ``` pyinstaller --name=your_project_name manage.py ``` 这里的 `your_project_name` 是你想要生exe 文件的名称,`manage.py` 是 Django 项目的入口文件。 执行完上面的命令后,会在当前目录下生一个名为 `your_project_name.spec` 的文件,这个文件包含了打包 exe 文件所需要的配置信息。 3. 修改 spec 文件 打开 `your_project_name.spec` 文件,找到 `datas=[]` 和 `hiddenimports=[]` 两行,将它们修改为如下内容: ``` datas=[ ('your_app/templates', 'templates'), ('your_app/static', 'static'), ] hiddenimports=[ 'your_app', 'your_app.apps', 'your_app.models', 'your_app.views', 'your_app.urls', ] ``` 这里的 `your_app` 是你的 Django 项目中的一个子应用。如果你有多个子应用,需要将它们都添加到 `hiddenimports` 中。 4. 打包 exe 文件 执行以下命令打包 exe 文件: ``` pyinstaller your_project_name.spec ``` 这个命令会在当前目录下生一个名为 `dist` 的目录,里面包含了一个可执行的 exe 文件,将这个文件拷贝到其他电脑上即可运行。 注意:如果你的 Django 项目中使用了第三方库,需要在 spec 文件中添加它们的依赖项。具体的方法可以参考 PyInstaller 的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值