文档章节

Django+SAE=个人博客 二

卜星星
 卜星星
发布于 2015/10/14 22:40
字数 1357
阅读 225
收藏 1
点赞 0
评论 0

以下内容中,所有提到jackerb都是我自己的项目名称,所以需要根据自己的来设定。

参考资料:Django Web开发指南.pdf 2009年5月第1版


现在我们来启用Django的admin功能,并且连接上sae上的mysql

  1. 编辑jackerb/settings.py文件

在INSTALLED_APPS里面,去掉django.contrib.admin前面的#,如下所示:

2. 编辑jackerb/urls.py文件

去掉admin行的注释,如下所示:

3. 编辑jackerb/settings.py文件,增加mysql设置

import os


if 'SERVER_SOFTWARE' in os.environ:

    from sae.const import (

        MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASS, MYSQL_DB

    )

else:

    # Make `python manage.py syncdb` works happy!

    MYSQL_HOST = 'w.rdc.sae.sina.com.cn'

    MYSQL_PORT = '3307'

    MYSQL_USER = '你自己的Access Key'

    MYSQL_PASS = '你自己的Secret Key'

    MYSQL_DB   = 'app_jackerb'


from sae._restful_mysql import monkey

monkey.patch()


DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.

        'NAME': MYSQL_DB,                      # Or path to database file if using sqlite3.

        # The following settings are not used with sqlite3:

        'USER': MYSQL_USER,

        'PASSWORD': MYSQL_PASS,

        'HOST': MYSQL_HOST,                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.

        'PORT': MYSQL_PORT,                      # Set to empty string for default.

    }

}


现在设置完这些文件了,那么就要在SAE上开启mysql服务吧

  1. 在SAE上oncedo应用左侧点击mysql,然后选择共享型Mysql,直接选择初始化mysql,之后点击,管理mysql,现在你可以看到,你有一个数据库名叫app_jackerb,和你在settings.py里设置的MYSQL_DB名字一样。

现在就可以在本地执行python manage.py syncdb,这样就可以远程创建各种表了。这里会让我们设置用户名和密码,就是登录admin需要用到的。现在是本地执行,但是操作的是SAE上的mysql,如果想要使用本地的mysql可以这样设置:

MYSQL_HOST = 'localhost'

MYSQL_PORT = '3306'

MYSQL_USER = 'root'

MYSQL_PASS = 'root'

MYSQL_DB   = 'app_jackerb'

就是把else下面的换成这些,就可以在本地mysql建表了,我一开始就是这么做的,我本来想在本地Mysql建表,之后导出sql,直接去SAE上的mysql里执行,但是搞了好久,也查了很多,就是建出来后不能用。最后我放弃了,使用了本地直接操作SAE上mysql的办法。在使用本地的mysql时,设置好了,这时执行python manage.py syncdb,有可以遇到一个问题,我自己遇到过,报错是这样的:

Traceback (most recent call last):

  File "manage.py", line 10, in <module>

    execute_from_command_line(sys.argv)

  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 453, in execute_from_command_line

    utility.execute()

  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 392, in execute

    self.fetch_command(subcommand).run_from_argv(self.argv)

  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 272, in fetch_command

    klass = load_command_class(app_name, subcommand)

  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 77, in load_command_class

    module = import_module('%s.management.commands.%s' % (app_name, name))

  File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 35, in import_module

    __import__(name)

  File "/Library/Python/2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>

    from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal

  File "/Library/Python/2.7/site-packages/django/core/management/sql.py", line 9, in <module>

    from django.db import models

  File "/Library/Python/2.7/site-packages/django/db/__init__.py", line 40, in <module>

    backend = load_backend(connection.settings_dict['ENGINE'])

  File "/Library/Python/2.7/site-packages/django/db/__init__.py", line 34, in __getattr__

    return getattr(connections[DEFAULT_DB_ALIAS], item)

  File "/Library/Python/2.7/site-packages/django/db/utils.py", line 93, in __getitem__

    backend = load_backend(db['ENGINE'])

  File "/Library/Python/2.7/site-packages/django/db/utils.py", line 27, in load_backend

    return import_module('.base', backend_name)

  File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 35, in import_module

    __import__(name)

  File "/Library/Python/2.7/site-packages/django/db/backends/mysql/base.py", line 17, in <module>

    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Users/xx/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.10-intel.egg-tmp/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib

  Referenced from: /Users/xx/.python-eggs/MySQL_python-1.2.3-py2.7-macosx-10.10-intel.egg-tmp/_mysql.so

  Reason: image not found

这其实就是mysql的lib没有在搜索路径里,位置在/usr/local/mysql/lib,所以把这个加入搜索路径就可以了,执行:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

然后就可以执行python manage.py syncdb了,效果如下:

执行完后,在SAE上的mysql中数据库app_jackerb里就有了很多表了。

现在就去看看我们的admin吧,地址是这样的:

http://jackerb.sinaapp.com/admin/

怎么样,是不是出问题了,问题大概是这些内容:

Traceback (most recent call last):
  File "/usr/local/sae/python/lib/python2.7/site-packages/sae/__init__.py", line 18, in new_app
    return app(environ, start_response)
  File "/usr/local/sae/python/3rd/django-1.5/django/core/handlers/wsgi.py", line 236, in __call__
    self.load_middleware()
  File "/usr/local/sae/python/3rd/django-1.5/django/core/handlers/base.py", line 45, in load_middleware
    for middleware_path in settings.MIDDLEWARE_CLASSES:
  File "/usr/local/sae/python/3rd/django-1.5/django/conf/__init__.py", line 52, in __getattr__
    self._setup(name)
  File "/usr/local/sae/python/3rd/django-1.5/django/conf/__init__.py", line 47, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/sae/python/3rd/django-1.5/django/conf/__init__.py", line 132, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'oncedo.settings' (Is it on sys.path?): No module named _restful_mysql

这个问题当时困扰我好久,开始我就在网上各种查,就是没有合适的方法解决,后来,我仔细一看报错信息,

No module named _restful_mysql

这里提到了_restful_mysql,在setting.py设置mysql时,有这样两句:

from sae._restful_mysql import monkey

monkey.patch()

既然找不到这个模块,那么我就把这两句注释掉了(前面加上#号),那么注释掉就可以了吗?

注释掉我们就可以正常的访问http://jackerb.sinaapp.com/admin/了,但是如果我们需要同步数据库的时候,还是需要

打开这两句的注释,因为没有这两句,就执行不了python manage.py syncdb。所以,在我们需要用这个命令的时候,要打开这两句的注释。不用的时候再注释掉。


OK了,现在就可以正常的看到http://jackerb.sinaapp.com/admin/的内容了,但是呢,现在看到的好像太简陋了,跟我们在本地运行的时候看到的不一样。那么下一节,就来解决这个问题,先睡觉了今天。


© 著作权归作者所有

共有 人打赏支持
卜星星
粉丝 25
博文 110
码字总数 68736
作品 0
海淀
程序员
Django+SAE个人博客 七

以后的博客就记录在我自己的个人博客下了,这是第七节的地址: http://jackerb.sinaapp.com/blog/7/ 扫码关注,更多惊喜

卜星星 ⋅ 2015/10/19 ⋅ 0

Django+SAE个人博客 四

参考资料:Django Web开发指南.pdf 2009年5月第1版 以下内容中,所有提到jackerb都是我自己的项目名称,所以需要根据自己的来设定。 已经有了admin后台管理了,那么,现在就增加上blog应用,...

卜星星 ⋅ 2015/10/15 ⋅ 0

Django+SAE个人博客 五

参考资料:Django Web开发指南.pdf 2009年5月第1版 以下内容中,所有提到jackerb都是我自己的项目名称,所以需要根据自己的来设定。 上节我们已经可以编辑自己的博客了,那么这一节就把我们的...

卜星星 ⋅ 2015/10/15 ⋅ 0

Django+SAE=个人博客 一

本地开发环境: 操作系统:OS X Yosemite Python版本:2.7.6 Django版本:1.5.12 远程: 使用新浪的SAE 参考资料:Django Web开发指南.pdf 2009年5月第1版,根据书中第二章完成,建议先在本地...

卜星星 ⋅ 2015/10/14 ⋅ 0

Django+SAE个人博客 九

第九节地址: http://jackerb.sinaapp.com/blog/9/ 扫码,获取更多精彩内容

卜星星 ⋅ 2015/10/19 ⋅ 0

Django+SAE个人博客 六

这一节来解决一些我自己的需求。 http://jackerb.sinaapp.com/blog/ 这里一下子把所有博文都显示出来了,并且每个博文的全部内容也都显示出来了,这样不符合我们一般见到的样式,所以先修改博...

卜星星 ⋅ 2015/10/15 ⋅ 0

Django+SAE个人博客 八

第八节地址: http://jackerb.sinaapp.com/blog/8/ 扫码关注,更多惊喜

卜星星 ⋅ 2015/10/19 ⋅ 0

Django+SAE个人博客 三

参考资料:Django Web开发指南.pdf 2009年5月第1版 以下内容中,所有提到jackerb都是我自己的项目名称,所以需要根据自己的来设定。 在第二节中,生成http://jackerb.sinaapp.com/admin,显示...

卜星星 ⋅ 2015/10/15 ⋅ 0

哇塞,OSC 新版个人空间和博客详情上线啦!

哇塞,9月20日开源中国新版个人空间和博客详情页上线啦! 大家知道,作为开源中国的程序猿们压力很大滴(遥想当年红薯一头浓密乌黑的秀发…现如今……咳咳)。此次他们再次爆发洪荒之力,新版...

两味真火 ⋅ 2016/09/20 ⋅ 44

微信支付forthinkphp5-code

微信支付forthinkphp5-code Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流2017-08-0737 阅读 微信 # WxPayAPI WeiXin Pay API v3 for PHP, Modified by lostphp(lostphp.com) ## 微信......

Love冥天个人博客-关注IT|PHP|互联网|php个人博客交流 ⋅ 2017/08/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 28分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 47分钟前 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 52分钟前 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 59分钟前 ⋅ 0

文件压缩和打包zip、tar

第六章 文件压缩和打包 6.5 zip压缩工具 zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。 注意:...

弓正 ⋅ 今天 ⋅ 0

vuex

一、状态对象如何赋值给内部对象。三种方式: 1、使用computed赋值,一定要写this,不然找不到$store。 computed:{ count(){ return this.$store.state.count; }} 2、通...

大美琴 ⋅ 今天 ⋅ 0

javaScript 设计模式

1、构造函数模式 ` /** 构造一个动物的函数 */ function Animal(name, color){ this.name = name; this.color = color; this.getName = function(){ return this.name; } } // 实例一个对象 ......

fangPeng_ ⋅ 今天 ⋅ 0

日常嘚瑟:TeamCity构建中解压和打包tar

要弄一个新的构建,很简单,从两个构建的tar格式Artifact中分别取一部分,重新打一个tar。 所以,我去写个脚本用curl下载两个依赖的Artifact,然后解压移动重新打个tar? 开什么玩笑,我的技...

谷永权 ⋅ 今天 ⋅ 0

Istio官方文档中文版

阅读目录 Istio官方文档中文版 回到目录 Istio官方文档中文版 http://istio.doczh.cn/ https://istio.io/docs/concepts/what-is-istio/goals.html 为什么要使用Istio? 在从单体应用程序向分...

xiaomin0322 ⋅ 今天 ⋅ 0

CentOS 7 Omnibus 包安装 GitLab 并汉化记录

系统环境 操作系统:CentOS 7GitLab:gitlab-ce-10.8.4-ce.0.el7.x86_64.rpm 下载Omnibus安装包 使用国内镜像加速下载地址 # wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el......

admin_qing ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部