Django + vue (一) Django部署

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

  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值