Django + vue (一) Django部署

2023-11-16

一、Django 部署,采用REST方式,较简约。

     1、 安装django          

     pip install django==2.2.4 =i https://pypi.tuna.tsinghua.edu.cn/simple

    2、 创建个目录pyvue,并在该目录下再创建两个目录,一个pyvue,一个是app,并创建manage.py文件。

 

          因为python web我只做后台计算服务,所以不准备前端页面目录。前端使用vue。

          manage.py文件内容如下:

import os
import sys
def main():
    import sys
    import django
    import os
    #DJANGO_SETTINGS_MODULE = 'pyvue.settings'
    # 设置环境变量
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'pyvue.settings')
    django.setup()
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django."
        ) from exc
    execute_from_command_line(sys.argv)


if __name__ == '__main__':
    main()

    3、在app目录下,创建文件views.py,编辑该文件,代码如下: 

#-*- coding:utf-8 -*-
from django.http import HttpResponse
import json
import logging
#import datetime 
from django.shortcuts import render, get_object_or_404
from django.views.decorators.csrf import csrf_exempt

log = logging.getLogger('scripts')

#视图处理函数
@csrf_exempt  #规避跨域攻击
def home(request):
    return HttpResponse('Hello World! Python & Vue! the Home Page!')

@csrf_exempt  #规避跨域攻击
def compute(request):       
    #rtn = get_object_or_404(Model)
    username = request.GET.get('username')
    #user = request.POST.get('user')
    filename = request.GET.get('filename')
    algorithm = request.GET.get('algorithm')    
    #filename = request.filename                     #指定的excel文件名
    #user     = request.user
    #algorithm  = request.algorithm                  #指定的算法
    ##根据user上传的文件filename,使用algorithm进行计算
    #...
    #...
    #得出计算结果后
    #return HttpResponse(json.dumps({'username':username,'filename:':filename,'algorithm':algorithm}))    
    lsRtn ='用户'+username+'输入文件'+filename+',使用算法'+algorithm +',计算结果为: 结果'
    lsRtnFile = 'result.xls'                        #计算结果文件
    return HttpResponse(json.dumps({'rtnval':lsRtn,'outfile':lsRtnFile})) #如何准确地返回给明确的用户结果?

      定义了两个方法:

     (1) home : 在访问首页时默认在浏览器显示"Hello World!..." 。

     (2) compute : 用于获取用户输入,并输出json格式文本串。

4、在pyvue目录下,创建settings.py和urls.py文件,如下图:      

      (1) 编辑settings.py文件,代码如下:              

import os
# 设置项目根目录
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(BASE_DIR)
# 加密签名
SECRET_KEY = 'b!iohd&sss@#42s#k9t01_k^52uludvw8@h0)1fnez^8l' #随便设置一个Key。
DEBUG = True  # 设置当前为调试模式

#本项目的应用都在目录app里。
INSTALLED_APPS = ['app','corsheaders']  # 添加应用,其中,'corsheaders'为了跨域访问而设置。

#设置中间件
MIDDLEWARE = [    
    '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',
)
#跨域设置结束。

ROOT_URLCONF = 'pyvue.urls'  # 设置项目路由文件urls
LANGUAGE_CODE = 'zh-Hans' #中文环境
TIME_ZONE = 'Asia/Shanghai' #时区
#使用django自带的数据库sqlite3,如果其它数据库得另外配置。
DATABASES = {
    'default':{
        'ENGINE':'django.db.backends.sqlite3',
        'NAME':os.path.join(BASE_DIR,'db.sqlite3')
    }
}

        该段代码设置了路由文件ROOT_URLCONF,也设置了跨域设置,这个非常重要;

       对于跨域设置,还需要在安装django-cors-headers。

       pip install django-cors-headers -i https://pypi.tuna.tsinghua.edu.cn/simple

       代码中,LANGUAGE_CODE设置了中文环境,TIME_ZONE设置了中国时区。

     (2) urls.py文件编辑:     

#导入相关的模块
from django.conf import settings
from django.http import HttpResponse
from django.urls import path
from app.views import compute,home,computeobj

#设置路由
urlpatterns = [
    path('', home, name='home'),
    path('compute', compute , name='compute'), #不可以写成 path('/compute',...)
]

  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django + vue (一) Django部署 的相关文章

随机推荐

  • java8 stream 转换list、map、set

    一 Collection Collections collect Collector Collectos Collection是Java集合的祖先接口 Collections是java util包下的一个工具类 内涵各种处理集合的静态方法
  • 基于FPGA的正弦波发生器设计与实现

    基于FPGA的正弦波发生器设计与实现 摘要 本文介绍了一种基于FPGA的正弦波发生器的设计与实现 通过使用FPGA的数字信号处理功能 可以实现高精度 高性能的正弦波生成 文章首先介绍了DDS Direct Digital Synthesis
  • vs2008中,在OCX控件中应用doc/view基本步骤

    1 利用向导创建一个MFC ActiveX Control控件CMyOCX 2 在工程中加入ActivDoc头文件和执行文件 class CActiveXDocTemplate public CSingleDocTemplate enum
  • 阿里-淘菜菜一面(电话面试)面经

    上来我先给面试官打预防针 我说我准备时间不长 可能不太行 意思是想推迟一段时间再面试 他让我别紧张 面试时间定下来不容易 就先直接面试 问题如下 1 在学校还是在家里 课程怎么样了 在学校 学分修完了 目前在学技术 2 自我介绍 人工智能学
  • Android LayoutInflater原理分析,带你一步步深入了解View(一)

    相信接触Android久一点的朋友对于LayoutInflater一定不会陌生 都会知道它主要是用于加载布局的 而刚接触Android的朋友可能对LayoutInflater不怎么熟悉 因为加载布局的任务通常都是在Activity中调用se
  • 数字化转型背景-数字化转型网

    数字化转型网szhzsw cn 数字化转型是指企业或组织将传统业务模式 流程 技术和文化等方面与数字技术相融合 实现数字化升级和转型的过程 数字化转型的背景有以下几个方面 技术发展 随着科技的不断进步 各种数字技术不断涌现 包括人工智能 物
  • Android Switch控件修改样式

    Android中自带的Switch控件在很多时候总觉得和整体系统风格不符 很多时候 自定义Switch是一种方法 但其实不用这么麻烦 安卓自带的Switch通过修改一些属性 也可以达到和自定义Switch差不多的一个效果 个人感觉 Swit
  • 对java中char的取值范围思考

    主要说一下我遇到的一个问题 就是网上关于char字符的取值范围定义 有的说是0 255 有的说是 u0000 uffff 其实 这两种说法都对 我们都知道 java中给char字符的解释是十六位 双字节 也就是按照补码的方式寻求取值范围 就
  • 延时任务-基于redis zset的完整实现

    所谓的延时任务给大家举个例子 你买了一张火车票 必须在30分钟之内付款 否则该订单被自动取消 订单30分钟不付款自动取消 这个任务就是一个延时任务 我之前已经写过2篇关于延时任务的文章 完整实现 通过DelayQueue实现延时任务 延时任
  • Elasticsearch --- 向es中导入数据

    一 从文件导入 用django启动 def zi dr request f open c txt r encoding utf 8 action index c12 type doc source title i strip 去掉 空 fo
  • 关于ES集群规模规划

    在搭建正式的生产集群之前 充分做好硬件和服务器配置以及集群规划是重中之重 磨刀不误砍柴工 硬件配置推荐 内存 ES排序以及聚合都是高度需求内存的 单机 单节点 64GB是很理想的配置 32GB或16GB也很常见 不推荐低于8GB 性价比较低
  • Elastic-Job - 分布式定时任务框架

    2019独角兽企业重金招聘Python工程师标准 gt gt gt Elastic Job是ddframe中dd job的作业模块中分离出来的分布式弹性作业框架 去掉了和dd job中的监控和ddframe接入规范部分 该项目基于成熟的开源
  • STM32移植FATFS时处理 warning: #188-D: enumerated type mixed with another type

    在STM32上移植FATFS时disk read 函数返回类型是DRESULT 而DRESULT是一个枚举类型 所以老是会提醒 warning 188 D enumerated type mixed with another type 主要
  • 前端歌谣的刷题之路-第二十一题-css单位二

    目录 前言 题目 核心代码 总结 前言 我是歌谣 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 本题目源自于牛客网 微信公众号前端小歌谣 题目 请将html模块div元素的宽度和高度设置为html根元素字体大小的4倍 注意 只需在css
  • 实现TextView垂直滚动以及监听

    由于新的项目中在广告轮播用到了垂直滚动显示 所以也当学习 自己定义了一个垂直滚动的view以及监听 用到TextSwitcher和ViewFactory TextSwitcher 字面理解是文字交换器 是ViewSwitcher的子类 从V
  • 【转】你在读博士期间明白的最深刻的道理是什么?

    写在前面 读博不是跟着老师学知识 都读到博士阶段了 知识的学习方法应该早已经熟练掌握 也早应该形成了一套成熟的 适合自己的知识学习方法 基础学科知识应该由自我驱动 自学来完成 那么读博期间的目标应该是培养什么 学会什么 读博的这4 6年一个
  • Express初学之入门

    1 Express简介 基于Node的极简MVC框架 提供灵活的路由功能 提供强大的中间件机制 内核极小 扩展性很好 使用广泛 2 路由机制 Express概念 定义了Api的地址 请求 响应方式 方法 天然支持HTTP Method 中的
  • grep 函数

    grep函数 如果你是个Perl的新手 你可以先跳过下面的两段 直接到 Grep vs loops 样例这一部分 放心 在后面你还会遇到它 grep BLOCK LIST grep EXPR LIST grep 函数会根据 LIST 中的元
  • zsh: command not found: flutter

    因为苹果笔记本重新安装了系统 需要重新安装flutter环境 这里记录一下flutter在安装过程中出现的问题 问题如下 zsh command not found flutter 解决步骤 1 打开open zshrc 2 如果没有就新建
  • Django + vue (一) Django部署

    一 Django 部署 采用REST方式 较简约 1 安装django pip install django 2 2 4 i https pypi tuna tsinghua edu cn simple 2 创建个目录pyvue 并在该目录