免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2390 | 回复: 0
打印 上一主题 下一主题

初学django [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-10 19:01 |只看该作者 |倒序浏览
这几天在学习django,现在我把碰到的一些问题和解决方法,记录下来。环境是windows xp。

1.安装python2.5.
2.安装mysql5.0,和mysql-python,也就是MySQLdb这个包。注意在安装mysql时候,需要将所用的字符集设置成utf8,如果没有设置,则在建立数据的时候一定做设置成utf8,否则在利用django admin site的时候会出现错误。
3.安装django0.96或者django 1.0。这两个版本有一些不一样,其中一个问题是在models.py这个文件中,
django0.96用的方法是:
class Admin:
   pass

而django1.0用的方法是在models.py的最后结尾加上
from django.contrib import admin
admin.site.register(模型名称)

4,这几个文件都安装好以后,进去C:\Python25\Scripts,这个目录中有一个文件是django-admin.py,
现在需要利用这个文件生成工程,命令行下进入该目录,运行一个命令,命令是:
“python django-admin.py startproject 工程名”
我的工程名是Cosmetic,所以命令是“python django-admin.py startproject Cosmetic”
5,在Cosmetic目录下有三个文件,settings.py 和urls.py需要修改。
在settings.py中,修改:
设置模板路径:
import os.path
TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__),'templates').replace('\\','/'),
)

设置数据库的一些参数:我的是这样的,
DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'ado_mssql'.
DATABASE_NAME = 'cosmeticdb'            
DATABASE_USER = 'root'            
DATABASE_PASSWORD = 'root'        
DATABASE_HOST = ''            
DATABASE_PORT = ''      

5,建立一个app,利用命令"python manage.py startapp app_cosmetic   ",然后根据需求设计model,修改models.py文件,添加模型。
在这个过程中由于版本不同,会遇到不一样的情况:第一个是max_length 和maxlength要根据django版本不同而不同,另外一个很奇怪的问题,不知道是不是django的一个bug,当使用
/////////////////////
class Meta:
   db_table = "自定义表名"
////////////////////////
的时候,第一次运行"python manage.py syncdb正常,第二次再运行这个命令时候,会出现提示错误,说是table XXXX  已经在数据库中存在。
而djangobook上写得很明白,如果模型不改变的话,重复执行同步命令的时候是没问题的。
在djangobook 的第五章有如下文字:
The syncdb command is a simple “sync” of your models to your database. It looks at all of the models in each app in your INSTALLED_APPS setting, checks the database to see whether the appropriate tables exist yet, and creates the tables if they don’t yet exist. Note that syncdb does not sync changes in models or deletions of models; if you make a change to a model or delete a model, and you want to update the database, syncdb will not handle that. (More on this later.)
If you run python manage.py syncdb again, nothing happens, because you haven’t added any models to the books app or added any apps to INSTALLED_APPS. Ergo, it’s always safe to run python manage.py syncdb — it won’t clobber things.
这个问题困了我好久,刚开始不知道是指定了自定义表名的缘故,于是重装python,换版本重装mysql,重装mysql-python,问题依旧。
而原来在另外一台电脑上是没有出现这个问题,仔细想想,对比两个models.py的代码,也就多了下面这句话。
/////////////////////
class Meta:
   db_table = "自定义表名"
////////////////////////

后来将这个语句删除,问题解决。









本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/54976/showart_1183359.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP