代码改变世界

python django学习-问题记录及解决方法

2010-03-05 00:11  码农.KEN  阅读(2349)  评论(6编辑  收藏  举报

最近在学习python django WEB开发框架,过程中遇到了不少的坎坷,特在此作下记录以便回顾,或许你也正在为这些问题而发愁?

 

1. 使用NetBeans for python作为编辑器时,你会发现输入的汉字都变成了小方框···

解决方法:需要将系统中的相应字体拷贝至jdk目录中,打开终端并输入: mkdir {JAVA_HOME}/jre/lib/fonts/fallback

此处注意将{JAVA_HOME}换成你的jdk主目录,mkdir执行完毕后,输入:

cp /usr/share/fonts/truetype/arphic/uming.tcc {JAVA_HOME}/jre/lib/fonts/fallback,重启netbeans再试试·应该能输入汉字了吧?

 

2. 一般看python的相关资料时,都会提醒你python代码对于缩进比较严格,可是你一定没有放在心上吧?一次我在给django项目添加admin应用,配置url映射的时候,总是访问出错,检查了若干次代码都没有发现代码逻辑问题,最后看错误提示中说非法的缩进···才发from django.contrib....这句前面多了个空格。

解决方法:去掉空格(^_^)

 

3.当你创建一个django项目,并写完一个view,测试时是否发现了凡是里面出现过中文的,访问时都会出错,但编译正常?那是因为默认的编码不支持中文

解决方法:在文件的最前面加上以下两行

#!/usr/bin/env python
#
 -*- coding: utf-8 -*-

 

 

4.在创建Category模型时,想利用继承自身来实现递归无线级分类,于是输入了parent=models.ForeignKey('self',null=True,verbose_name="父类标识")

可是进入admin后台去创建Category时··你会发现创建第一个就会受到阻碍,提示必须选择一个父类。既然是第一个,又怎么能选到父类呢。。不是设置了null=True了吗(可空)?

解决方法:还需要加上blank=True,如:parent=models.ForeignKey('self',null=True,blank=True,verbose_name="父类标识")

 

5.由于django一直推荐搭配PostgreSQL数据库,其本身也是比较优秀的开源数据库,所以我们有必要学习使用一下。django对PostgreSQL操作需要用到psycopg2这个库;首先从这里下载并安装:

install  psycopg2$ wget http://initd.org/pub/software/psycopg/psycopg2-2.0.13.tar.gz

$ tar zxvf psycopg2-2.0.13.tar.gz

$ cd psycopg2-2.0.13

$ python setup.py install

以上步骤就是常规的python库安装方法,但不知道为什么我在CentOS下面安装时,总是提示No such file or directory

 

解决方法:用文本编辑器打开setup.cfg($ vim setup.cfg),找到#pg_config=这行,将前面的#去掉,然后将值设置为:

pg_config=/{你的PostgreSQL安装目录}/bin/pg_config

保存后,再重新执行python setup.py install ,这次应该OK了吧

 

6.如果你一直都是用pgAdmin来管理PostgreSQL,那么当你必须要直接使用命令行psql连接PostgreSQL时,就会显得无从下手。

解决方法:这里只介绍最需要的,就是如何通过命令行连接到自己的database并操作。

首先 $ psql -d dbname(你的数据库名) -U postgres(一般安装pgsql时默认的超级用户),这样既可进入对该数据库操作的界面,剩下的就是写SQL语句来执行了,

如:DELETE FROM TABLE WHERE ....;(记得,每条SQL语句后面必须分号结束,否则不会执行)

 

目前值得记录的就这些,此随笔会随时更新;也欢迎正在学习python django的朋友在此探讨问题,一同进步。