当前位置: 首页 > news >正文

在SAE搭建Python+Django+MySQL(基于Windows)

        为了与时俱进,工作闲余開始研究Python,刚一接触就被Python这“优雅”的语法吸引住。后来接触到了Django。尽管还没有太深入的研究。但对这样的新概念的WEB开发非常感兴趣,决定尝试用它取代Java开发小的后台程序,边用边学吧!

        注:本篇仅仅介绍基础搭建过程,不负责解说。由于刚接触Python我也不懂!再见


一、SAE使用的Python环境版本号

    Python2.7
    Django1.27 / 1.4 / 1.5
    本地版本号要确定好。须要用到其它的预装模块也要确定好。
    (我一開始使用了高版本号的Python和Django,结果出现了一大堆莫名其妙的错误。)

二、SAE注冊、配置

    注冊、新建应用略,新建完毕之后在“代码管理”中创建一个代码版本号,SAE同意有多个版本号的代码存在。能够互相切换。
    SAE通过SVN来管理Python源码,页面的最以下有源码的SVN地址,是“https://svn.sinaapp.com/<你的app名字>”这种格式,SVN账户password分别为安全邮箱、安全password

    SVNclient下载地址http://tortoisesvn.net/downloads.html

    根文件夹是以代码版本号为区分,应该仅仅有一个标号为“1”的文件夹,当中仅仅有:config.yaml,index.wsgi两个文件。

    在“1”目录下创建Django项目,命令行中输入:

    django-admin.py startproject <你的APP名字>

    这里会产生两级以你APP命名的路径,将子文件夹及manage.py拷贝出来。变为一级文件夹
    此时的根文件夹有config.yaml、index.wsgi、manage.py、<app名字>文件夹
    <app名字>目录中有__init__.py、setting.py、urls.py、wsgi.py

三、改动config.yaml、index.wsgi的内容:

config.yaml:
name: <你的APP名字>
version: 1


libraries:
 - name: "django"
   version: "1.5"
#我使用的是Django1.5

index.wsgi:
import os 
import django.core.handlers.wsgi
import sae
os.environ['DJANGO_SETTINGS_MODULE'] = '<你的APP名字>.settings'
application = sae.create_wsgi_app(django.core.handlers.wsgi.WSGIHandler())

四、调试Django

        建议使用pycharm作为IDE来开发。很方便。

        下载地址:http://www.jetbrains.com/pycharm/


        安装SAE在本机的模拟环境。

        下载地址:https://github.com/sinacloud/sae-python-dev-guide.git

        在dev_server中运行python setup.py install

        假设出现“No module name setuptools”,说明缺少setuptools

        下载地址:https://bootstrap.pypa.io/ez_setup.py

        把它保存下来并运行下面。它会自己主动安装。


        改动setting.py中的数据库链接,加入并改动例如以下代码:
import os.path
from os import environ
debug = not environ.get("APP_NAME", "")
if debug:
#LOCAL 当代码执行在本地的时候,链接本地数据库。自行配置
    MYSQL_DB = 'app_saepy'
    MYSQL_USER = 'root'
    MYSQL_PASS = 'admin'
    MYSQL_HOST_M = '127.0.0.1'
    MYSQL_HOST_S = '127.0.0.1'
    MYSQL_PORT = '3306'
else:
#SAE 当代码执行在云平台的时候,链接云数据库,链接用的參数都在sae.const里面
    import sae.const
    MYSQL_DB = sae.const.MYSQL_DB
    MYSQL_USER = sae.const.MYSQL_USER
    MYSQL_PASS = sae.const.MYSQL_PASS
    MYSQL_HOST_M = sae.const.MYSQL_HOST
    MYSQL_HOST_S = sae.const.MYSQL_HOST_S
    MYSQL_PORT = sae.const.MYSQL_PORT


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': MYSQL_DB,
        'USER': MYSQL_USER,
        'PASSWORD': MYSQL_PASS,
        'HOST': MYSQL_HOST_M,
        'PORT': MYSQL_PORT,
    }
}

        为了測试我们开放Django内置的admin,改动urls.py和setting.py。

        在本地通过命令启动服务,或者通过PyCharm启动
        manage.py runserver 8000
        应该能够通过localhost:8000来訪问Django程序了。



        注意SAE的MySQL貌似出于安全考虑,不同意用Navicat之类的工具訪问。使用syncdb命令同步SAE的数据库也比較麻烦,解决方式通常是在本地用syncdb命令,然后将本地数据库转存为SQL文件。再在SAE的MySQL上运行。这样会方便非常多。

(使用SAE的MySQL之前,记得须要在“服务管理”中初始化数据库。



        通过SVN上传已经本地配置好的Django项目,不出意外<app名字>.sinaapp.com/admin/应该已经能够訪问,可是管理界面是处于没有没有CSS的状态。

这是Django找不到admin的静态文件所致,有非常多种解决方案,在官方文档中有说明。比較简单的方式能够把admin所用的静态文件复制到"1"以下(<在Django安装路径>\django\contrib\admin\static下的admin目录),通过SVN上传之后就能够了。

相关文章:

  • Java 单例模式
  • TP5分页类
  • 新CSS伪类:focus-within
  • 如果一个人
  • xmemcached 0.60 优化过程
  • 生产环境硬件使用总结
  • xmemcached发布1.1.2 (权重、noreply、spring集成)
  • tomcat8.5报错
  • Clojure世界:利用HouseMD诊断clojure
  • pat解题报告【1082】
  • Java IO详解(七)------随机访问文件流
  • Spring+SpringMVC+MyBatis深入学习及搭建(三)——MyBatis全局配置文件解析
  • 硬链接和软链接
  • 【python自制】让大白成为你的个人助手!
  • java RabbitMQ
  • 【Amaple教程】5. 插件
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • docker容器内的网络抓包
  • JS函数式编程 数组部分风格 ES6版
  • Linux gpio口使用方法
  • Python实现BT种子转化为磁力链接【实战】
  • Rancher-k8s加速安装文档
  • React-Native - 收藏集 - 掘金
  • SQLServer之创建数据库快照
  • Travix是如何部署应用程序到Kubernetes上的
  • vuex 学习笔记 01
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 分享几个不错的工具
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 基于HAProxy的高性能缓存服务器nuster
  • 如何设计一个微型分布式架构?
  • 一起参Ember.js讨论、问答社区。
  • 带你开发类似Pokemon Go的AR游戏
  • ​ArcGIS Pro 如何批量删除字段
  • #mysql 8.0 踩坑日记
  • (003)SlickEdit Unity的补全
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (javascript)再说document.body.scrollTop的使用问题
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (三)mysql_MYSQL(三)
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)重识new
  • ./和../以及/和~之间的区别
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net refrector
  • .Net Winform开发笔记(一)
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @synthesize和@dynamic分别有什么作用?
  • [ Linux ] Linux信号概述 信号的产生
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [20171102]视图v$session中process字段含义