一、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',...)
]