Django Demo搭建

写在前面

单位给我个任务,让我为他们的数据分析系统搭建一个实时的网络服务,他们以前的数据分析系统并不是实时地从数据库里读表,是每周人工更新。希望我帮他们搭建一个网站后端,实时从数据库里读表(数据库是SQL Server,他们已经建好了),返回前端人员JSON数据,前端人员负责显示。

而我一开始的思路是在WINDOWS上搭建好环境,然后再用filezilla上传到LINUX上。这种想法很幼稚因为:

  • 当我发现在WIN上搭建Django的环境配置太麻烦,很多在WIN上需要安装的依赖包在LINUX上并不需要安
  • 代码是可以移植的,环境是不能移植的。意味着我学完在WIN上怎么搭环境以后,还得从头学一遍LINUX上怎么搭环境。
  • 综上所述,不如直接从LINUX上开始做

    环境配置

  • Linux系统版本:给我的是CentOS
    CentOS版本
  • 我安装了 Pycharm,路径:
    [root@ml-J33A3K Web]# cd /usr/Web/InstallPackage/pycharm-2017.3.4/bin
  • 在该路径下输入如下命令,启动pycharm
    [root@ml-J33A3K bin]# sh pycharm.sh
  • 我安装了Anaconda3,路径:
    [root@ml-J33A3K Anaconda3zy]# cd /usr/Web/Anaconda3zy
  • 我把项目新建在,路径:
    [root@ml-J33A3K ~]# cd /root/PycharmProjects/
    [root@ml-J33A3K PycharmProjects]# ls
    DJGDemo
  • DJGDemo这个文件夹就是整个项目了

    因为现在只有这么一个项目,所以启动pycharm以后默认就显示这个项目

  • 在LINUX中输入conda list能查看我安装过的项目需要的依赖包如下:
  • django 2.0.2 py36hd476221_0
    Django 2.0.3
    django-cors-headers 2.2.0
    django-pyodbc 1.1.3
    django-pyodbc-azure 2.0.3.0
    pyodbc 4.0.22 py36hf484d3e_0
    freetds 1.00.9 0 (这个包我安了,但是好像没有用到它的地方,别删了比较保险)

    Django项目说明

    新建项目时的参数选择

    新建项目的参数
    注意:

  • 不要选Virtul env,这代表创建一个虚拟的PYTHON环境。我在WINDOWS上试过,这样安装的一些依赖包会直接安装到虚拟环境里,不会安装到系统环境里,适合从WIN到LINUX的环境移植。但我现在直接在LINUX上做,涉及不到环境从WIN移植到LINUX上,所以不选。而且如果选了,一些依赖包的管理我容易弄乱了,分不清到底装在了哪,所以不选。
  • 在Exsiting Interpreter 处,点击右边的齿轮,选择“Add Local”,然后选择”Conda Environment”,再选择我安装的Anaconda3的Interpreter,具体如下:
    AddLocalRemoter
  • More Settings 解读:

  • Templates folder这个文件夹,templates是指我建的网站 那些HTML网页存放在这里(因为是前后端分离开发的,所以我没写网页)
  • Application name: 后面填充的是要新建的APP的名字。
  • 说明:
    Django框架下 WEB项目和APP的关系如下:
    一个WEB项目可以有多个APP:比如我建了一个网站(WEB项目),下面有博客系统(Application ),网上商城系统(Application )
    一个APP可以存在多个WEB项目下:
    比如我又建了一个网站(WEB项目),又想建一个博客系统(Application )和一个论坛系统(Application ),那我可以复用刚才第一个网站的博客系统
  • 建完以后项目目录结构如下图:
    项目目录结构

    说明:search.py是我手动添加的python文件

    我修改过的、用过的只有标黄的文件,其他的文件都没动。
    FirstAPP目录下就是一个Application,不知道以后会不会有用,就先新建出来。目前为止没有用到。

    项目文件用途说明:

    search.py 最关键的定义API的地方

    search.py
    接口调用方法:
    我下载了一个软件叫POSTMAN,可以测试API,截图如下:
    调用search API如下:
    调用search
    调用getdata API如下:
    调用getdata
    search是我写的测试用的函数
    getdata是我写的真正从数据库里读数据返回JSON的函数

    urls.py 定义路由规则:即在浏览器里输入url调用哪个函数

    urls

    settings.py 整个项目的设置

    设置了数据库的连接方式
    DATABASE配置

    试了无数次,这样写就能连上数据库了。这样配置是因为要与/etc/odbc.ini里已有的数据库配置文件相一致
    /etc/odbc.ini文件内容如下:
    ODBC

    settings.py里DATABASES的参数解读:
    ENGINE我选择的是PYODBC方式
    (好像还有种mysql的连接方式,试不对,弃用之)
    NAME:数据库的名字(要与odbc.ini里Database=XXX 的XXX一样)
    USER:用户名
    PASSWORD:用户密码
    HOST:数据库所在的主机的IP(要与odbc.ini里Server=XXX 的XXX一样)
    OPTIONS里的driver:要与odbc.ini里Driver=XXX 的XXX一样

    解决CORS跨域问题
    第一步:在settings.py里修改ALLOWED_HOSTS 为如下
    ALLOWED_HOSTS = [‘*’]#allow all ip

    第二步:
    我先安装了django-cors-headers
    pip install django-cors-headers,
    然后要在setting里改动如下:
    解决跨域访问问题要添加的代码
    (上图里标黄的是我添加的,下图都是我添加的)
    解决跨域访问问题要添加的代码

    运行服务 python manage.py runserver 0.0.0.0:8000

    进到项目目录下 然后运行命令,具体如下:
    [root@ml-J33A3K PycharmProjects]# cd /root/PycharmProjects/DJGDemo
    [root@ml-J33A3K DJGDemo]# ls
    db.sqlite3 DJGDemo FirstApp manage.py templates

    [root@ml-J33A3K DJGDemo]# python manage.py runserver 0.0.0.0:8000
    Performing system checks…

    System check identified no issues (0 silenced).
    March 22, 2018 - 04:16:03
    Django version 2.0.3, using settings ‘DJGDemo.settings’
    Starting development server at http://0.0.0.0:8000/
    Quit the server with CONTROL-C.
    注意:
    1.要写0.0.0.0:8000,才能被除服务器本身IP以外的其他IP访问
    2.如果不写0.0.0.0:8000,就相当于在Pycharm环境中点绿色三角运行项目,这种情况网站只能被服务器本身IP访问。

    如何在后台运行(这样关闭SSH进程就可以不被杀死了)参见:
    http://www.cnblogs.com/catmelo/archive/2013/05/06/3062014.html
    简单来说就是 在命令后一个空格,然后写一个取地址符

    与数据库打交道时需注意的问题

    判断空的单元格用 is None

    在Navicat里看数据表里数据的本来形式是
    数据库
    做个试验:
    运行manage.py在控制台里做试验:

    import django.db import connections
    import numpy as np
    curs=connections[‘default’].cursor()
    curs.execute(“SELECT DISTICT PartLifecycle form 表名”)
    wwd=curs.fetchall()
    wwd[2]
    (None,)
    这是tuple形式
    wwd[2][0] is None
    Out[21]: True
    wwd[2][0] is np.NAN
    Out[22]: False
    wwd[2][0] is 6
    Out[23]: False

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值