半尾

半尾的博客

他的个人主页  他的博客

Django模型学习

半尾  2010年06月10日 星期四 06:46 | 2534次浏览 | 6条评论

Django Book 里面模型内容的要点回顾。

1.数据库配置 setting.py

 

 DATABASE_ENGINE = ''
DATABASE_NAME = ''
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''

 

2.Project和App的区别:

一个project包含很多个Django app以及对它们的配置。

 

技术上,project的作用是提供配置文件,比方说哪里定义数据库连接信息, 安装的app列表, TEMPLATE_DIRS  ,等等。

 

一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在。

 

例如,Django本身内建有一些app,例如注释系统和自动管理界面。 app的一个关键点是它们是很容易移植到其他project和被多个project复用。

3.创建app

 python manage.py startapp books

 

4.定义模型:模型实际上是 django.db.models.Model 类对象的子类,是包含一些对象的容器。

继承父类的一些存取、更新、查询方法。

5.模型安装:

 INSTALLED_APPS = (
    # 'django.contrib.auth',
    # 'django.contrib.contenttypes',
    # 'django.contrib.sessions',
    # 'django.contrib.sites',
    'mysite.books',
)

 

6.数据库生成

 python manage.py syncdb

 

7.自动添加ID字段,p.save()

8.查询对象Publisher.objects.all()

9.数据过滤Publisher.objects.filter(),","分隔参数类似AND语句, (name__contains="press") 分隔类似LIKE语句 WHERE name LIKE '%press%';  

10.获取单个对象Publisher.objects.get()

11.排序Publisher.objects.order_by() 逆向排序,缺省排序class Meta:ordering = ['name']

12.连锁查询:即多条件查询

13.限制返回数据,利用索引和切片

14.更新多个对象:Publisher.objects.update()

15.删除对象,对象的delete()方法

16.再增加一条,设置字段可选blank = True

    设置日期型和数字型字段可选null = True, blank = True 

 

感受:充分利用了Python类的特点,把数据库的一些数据表操作转换为Pyhon类继承定义,对象组合,查询方法应用。避免重用。分离数据模型(Model)和视图(Views)处理方法。

疑惑:定义了模型,视图中如何对模型进行流程定制呢?我觉得是导入模型文件(models.py),然后根据request进行一些解决方案,最后返回response。留待Djangobook后面的章节验证。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
李迎辉

回复 李迎辉  2010年06月10日 星期四 16:01

Model就是表,不知道你所说的流程定制是什么意思。上文中是不是应该为:save()而不是saver()。

不过个人观点,django的app还不完善,对于静态文件和参数配置在app中无支持,移植性受限。

5条回复

  • 半尾

    回复 半尾  2010年06月10日 星期四 19:09

    1.我的意思是视图(views)对模型(Model)进行逻辑处理,我还没有往下学习,只是猜想。
    2.应该为save(),手误。
    3.对于框架的特点、区别、构成我尚未了解,看不出局限性,从Django只是为入门考虑。

    :一直想问Ulibweb是否可以作为学习和使用,即便是目前可能改动、升级、更新较多,但是我实际上很想使用Ulibweb做成个例子出来,因为有您这位现成的老师指导嘛。

    4条回复

      • 李迎辉

        回复 李迎辉  2010年06月10日 星期四 19:35

        uliweb可以作为学习的框架,虽然有改动,但是我会尽量做到兼容。至少目前没有结构性的改动

        3条回复

          • 半尾

            回复 半尾  2010年06月10日 星期四 19:46

            好的,我其实很早就看了你的learning uliweb了,也想有个像您这么牛的师父。(我喜欢做的一件事情用猫扑网的话说叫“人肉”,对某个感兴趣的人基本资料、博客、日志、照片等等通过搜索引擎基本能挖掘出来,题外话呵呵),但我首先得有个框架是什么的形象概念才好进一步学习。
            Django book有一点,基础,容易入门。
            写Leaning book 应该不同于做技术、学技术、钻研技术,应该保证两点,一,浅显易懂,二,知识点全面。
            当然我希望我们中国人的框架能发扬光大。
            目前我在用UliPad,很好用。

            2条回复

              • 李迎辉

                回复 李迎辉  2010年06月10日 星期四 19:49

                有兴趣你可以先试试,uliweb虽然功能没有django强大,但是简单的开发足够,并且有发展的空间。如果研究深入做出自已的框架也不是什么问题

                1条回复

                  • 半尾

                    回复 半尾  2010年06月10日 星期四 20:01

                    好的,一定。收帖吧老大。8点了,我学会儿,有问题再跟您请教。

                    0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号