代码改变世界

写第一个Django app 笔记(安装配置)

2008-05-20 13:45  ubunoon  阅读(3137)  评论(0编辑  收藏  举报

Writing your first Django app
写第一个Django app 笔记

这个笔记是很早以前写的,参考了很多django文献与官方文档,希望能够对观看者有所帮助!

一、安装与配置
1、下载安装Django,从官网上下载安装。
2、解压缩Django,在shell下(cmd)进入Django文件夹
3、运行python setup.py install,运行前必须确保python在环境变量中
4、安装完毕后,把site-packages/django/bin目录设置到环境变量下面
此时,django已经配置完毕

二、创建project和app
1、进入到一个目录,在shell下运行django-admin.py startproject mysite
 其中django-admin.py在上面设置的环境变量(django/bin目录)下,mysite为
 自己创建的project名称,此时django会为你创建mysite文件夹,该文件夹下
 面有以下几个文件:
  __init__.py   manage.py   settings.py   urls.py
  这四个文件分别用来表示工程,管理工程,配置Django运行,url的解析

2、shell下进入mysite目录,运行manage.py runserver,会给出一些提示,按
 下ctrl-c(windows下)结束server运行

3、打开浏览器,输入http://127.0.0.1:8000后,会出现Django的一些提示:
 It worked!
 Congratulations on your first Django-powered page.
 如果没有出现,则出错,默认下端口号为8000,下面方法可以修改端口号:
 manage.py runserver port
 
 教程中给出了一个重要警告:不要把这个manage.py作为服务器发布!!

4、使用manage.py startapp appname 命令创建app,在文件夹下面会创建
   一个文件夹,包含下面文件:
   __init__.py  models.py, views.py
   __init__.py为空文件,表示该目录下的文件是一个整体模块
   models.py文件中定义各类数据表格类
   views.py还不清楚

5、models文件中定义的类为数据库中的表格(表格的名称由小写字符的app名
   称+ _ +小写字符的类名构成),这个数据库需要在settings.py中进行设置,
   以大写DATABASE开头,设置引擎,数据库名称,端口号,主机地址,以及数据
   库登陆的用户名和密码models.py文件中定义的类以models.Model为父类进行处
   理。
   表格中的每一个column都必须用*Field来定义,具体有:
    CharField(maxlength=50)  TextField()
    IntegerField    DateTimeField()
    ForeignKey()(用来关联两个表格)
     
6、编写完models的代码后,类结构并不能够进入到数据库表格中,在settings.py
   中设置INSTALLED_APPS,增加安装的app,然后运行下面的方法:
   manage.py syncdb
   此时,syncdb会依据INSTALLED_APPS中的配置,进行类搜索,为没有创建表格的
   类创建数据库表格,在创建完表格后,会提示你创建superuser,这个superuser是
   Django的superuser,非系统(Linux下的root权限,windows下的administrator权限)
   的superuser,之后你就可以用admin登陆网页了。
   注:syncdb可能使用UPDATE更新数据库表格,也可能使用INSERT插入表格,依据所写代
   码确定

7、当然直接以admin登陆还是有些问题,需要做三件事:
   a. 修改settings.py文件,在INSTALLED_APP中增加'django.contrib.admin',
   b. 运行manage.py syncdb,创建数据库文件,增加django_admin_log数据库表格
   c. 在urls.py中把# Uncomment this for admin:下面一行的注释符号去除
   此后在浏览器中输入htpp://127.0.0.1:8000(端口号依据运行情况),即可出
   现登陆界面

8、为了能够控制和修改models.py文件中的类中定义子类Admin,这样superuser可以
   登陆到系统中后就可以为这个类的实例添加和删除等操作了。
  
9、在控制台进行操作的话,以manage.py shell方式登陆python,这种方式可以为python
   增加DJANGO_SETTING_MODULES环境变量,并增加project.app(用具体的project名称和
   app名称代替)到环境变量中,用from...import语句载入相关模块类,就可以对该模块进行
   操作了。
  
   获取所有对象:Poll.objects.all()
   对象过滤(查询): Poll.objects.filter(question__startswith('What'))
                                       #question表示类中的数据成员
   依据参数获取对象:Poll.objects.get(pub_date__year=2005)
                     Poll.objects.get(id=1) <===> Poll.objects.get(pk=1)                 
   返回的对象存储后,可以使用对象所在类的method --> p = Poll.objects.get(id=1)
    c = p.choice_set.create(choice='Not much',votes=0) # 注意写法
   进入到关联的对象: c.poll
                     p.choice_set.all() # 进入关联获取choice的所有对象
                     p.choice_set.count() # 进入关联,获取choice的所有对象个数
   删除其中的一个choice: c = p.choice_set.filter(choice__startswith='Just hacking')
                          c.delete()                                           
  
 
10、控制台模块管理,用该类定义一个实例,返回的类实例可以直接访问数据元素,也可以直接
   修改,通过save()方法才把修改的内容保存到数据库中。数据库表格中有一个自动增加的
   id变量(由数据库控制),django通过id或者pk获取(primary-key)
  
注意:每一次在models中修改完一个类时,需要重新运行syncdb进行数据库更新,之后在运行
   runserver,此时刷新浏览器页面,可以得到正确的结果,否则由于models中的类与数据库
   中有差别,将导致运行错误。