现在的位置: 首页 > 综合 > 正文

09年8月1日工作记录

2013年10月24日 ⁄ 综合 ⁄ 共 2502字 ⁄ 字号 评论关闭

0981日工作记录

 

3.视图将一个机遇Pinax的项目移植到一个基于Satchmo的项目中。

1.SVN提交,冲突,resolve conflict.

2.在Ubuntu下配置MySQL等一系列软件,很方便。

 

安装MySQL

软件包管理器,安装:python-mysqldb, phpmyadmin, mysql-server-5.0
phpmyadmin的地址:
http://localhost/phpmyadmin/


对已有项目的整合

接到的任务是将另一个codersns项目代码迁移到我们的代码中。

对已有项目的修改

一个文件夹包含所有apps。
修改settings.py。
修改urls.py,添加一行。

基本没有影响原有的代码。

修改views, models, forms文件中的import问题

主要是import的错误。
总结一个关于import好习惯:
把从django import的东西和从自己codeimport的东西明确地分离开。一旦遇到问题需要修改的时候,比较方便。

依赖tagging app

ImportError: No module named tagging.models
freshfanatic.apps_sns.share_recipe.models.py

依赖于Pinax 的 tagging app。

将这个app添加到settings里应该就可以了。但是这回连服务器都启动不了了:
No module named tagging.managers

由于服务器都没有启动起来,推测错误出在__init__里,果然,第二句:
from tagging.managers import ModelTaggedItemManager, TagDescriptor
可见,错误在于 tagging app 没有在Python path 上。

卡住,如果采用easy_install的方法安装 django-tagging 的话,这个问题就可以解决。
但是这同时意味着项目多了一个依赖,也意味着所有成员如果不安装tagging 就会启动不了服务器……思考中……

暂时注释掉settings里的tagging就可以进入Djangoshell了:
fruitschen@fruitschen-desktop:~/workspace/freshfanatic$ python manage.py shell
……
(InteractiveConsole)
>>> import sys
>>> import pprint
>>> pprint.pprint(sys.path)
['/home/fruitschen/workspace/freshfanatic',
 '/usr/local/lib/python2.6/dist-packages/pycrypto-2.0.1-py2.6-linux-i686.egg',
……
 '/usr/local/lib/python2.6/dist-packages']

看来Django项目的路径和普通的Python程序相比,path相差不大。只是多出了一个项目根目录。

思路:可以利用settings.py的路径,加上相对路径获得tagging app 的路径,添加到sys.path里。shell测试:
>>> import settings
>>> settings.__file__
'/home/fruitschen/workspace/freshfanatic/settings.py'
>>> import os
>>> home =  os.path.dirname(settings.__file__)
>>> home
'/home/fruitschen/workspace/freshfanatic'
>>> s = os.path.join(home,'apps_sns')
>>> s
'/home/fruitschen/workspace/freshfanatic/apps_sns'
>>> sys.path.insert(0,s)
>>> pprint.pprint(sys.path)
['/home/fruitschen/workspace/freshfanatic/apps_sns',
……
]
>>>

以上省略若干错误。

实践,修改apps_sns/__init__.py,添加如下内容:

import settings
import os
import sys

home =  os.path.dirname(settings.__file__)
s = os.path.join(home,'apps_sns')
sys.path.insert(0,s)

修改settings.py加上之前注释掉的 taggin app,重启服务器,一切正常。
syncdb
,没有问题。

 

浏览/localhost:8000/sns/,可以看到sns项目的主页,但是所有的媒体文件都没有显示,查看服务器终端的信息:
[01/Aug/2009 03:32:17] "GET /sns/images/big_nav_logout_normal.gif HTTP/1.1" 404 3256
查看homepageview,模板为 loginjoin.html
查看loginjoin.html,所有的媒体文件采用的都是 "css/style.css" 形式的相对路径。
个人认为应该采用"{{ Media_URL }}/css/style.css" 至少在以后修改的时候会灵活一点。

 

小收获

测试了一下,修改模板采用{{ Media_URL }}之后仍然访问不到文件。从FireBug的结果看来,应该是 Media_URL 的值为 None
搜索了一下,在模板中使用 Media_URL 的条件有好几个,以前一直都没有注意到:
1
。在settings.py 中定义了 Media_URL。(这个是当然的)
2
django.core.context_processors.media 是激活的,在默认的Django 项目中,这个是激活的。
    
不过查了一下,我们项目的setttings还真就把这项给关闭了。
3
。使用了RequestContext。


SVN提交

再次修改冲突。

Over of the day.

抱歉!评论已关闭.