被解救的Django【2】

第三部分:创建一个投票应用


1.      简介


它包含两部分:

其一是:一个公开的网站,可以让访客查看投票的结果并让他们进行投票。

其二是:一个后台管理网站,你可以添加、修改和删除选票。


2.      创建一个项目


打开命令行,cd到工程目录pro1,键入命令:$django-admin   startproject    mysite 




在pro1中新建文件目录如下:




简介:

a: 外层的mysite/根目录仅仅是项目的一个容器。它的命名Django无关紧要;可以把它重新命名为任何喜欢的名字。

b: manage.py:一个命令行工具,可以使用多种方式对Django项目进行交互。 可以在django-adminmanage.py中读到关于manage.py的所有细节。

c: 内层的mysite/目录是你的项目的真正的Python。它是你导入任何东西时将需要使用的Python包的名字,例如 mysite.urls

d:  mysite/__init__.py一个空文件,它告诉Python这个目录应该被看做一个Python包。 

e:  mysite/settings.py:该Django项目的设置/配置Django设置 将告诉你这些设置如何工作。

f:   mysite/urls.py:该Django项目的URL声明;你的Django站点的目录

g:  mysite/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。



数据库的建立:


编辑mysite/settings.py,它是一个用模块级别变量表示 Django配置的普通 Python模块。默认情况下,该配置使用SQLite




如果你希望使用另外一种数据库,请配置合适的database binding,并在 DATABASES'default'条目中修改以下的配置以匹配你的数据库连接的设置:

ENGINE – 'django.db.backends.sqlite3''django.db.backends.postgresql_psycopg2''django.db.backends.mysql''django.db.backends.oracle'。其它的后台也可以支持

NAME –  数据库的名称。如果你使用SQLite,数据库将是你计算机上的一个文件; 如果是这样的话,NAME应该是这个文件的绝对路径,包括文件名。默认值是os.path.join(BASE_DIR, 'db.sqlite3'),它将文件保存在你项目的目录中。


当你的项目使用SQLite之外的其他数据库引擎时,就必须添加USER PASSWORDHOST等额外的设置,如果你使用PostgreSQL或者MySQL,确保到此你已经建立好一个数据库。 可以在你的数据库的交互式提示命令下,使用CREATE DATABASE database_name;创建它。


如果你使用SQLite,你不需要事先创建任何东西 ——数据库文件将会在需要的时候自动创建。


当你编辑mysite/settings.py时,请设置TIME_ZONE为你自己的时区。

TIME_ZONE = 'UTC'  –>   TIME_ZONE ='Asia/Shanghai'


INSTALLED_APPS设置。它保存这个Django实例中激活的所有的Django应用的名字。 应用可以在多个项目中使用,而且你可以将这些应用打包和分发给其他人在他们的项目中使用




默认情况下,INSTALLED_APPS包含下面的应用,它们都是Django与生俱来的:

django.contrib.admin ——管理站点。

django.contrib.auth ——认证系统。

django.contrib.contenttypes ——用于内容类型的框架。

django.contrib.sessions ——会话框架。

django.contrib.messages ——消息框架。

django.contrib.staticfiles ——管理静态文件的框架。



数据库表的建立


在使用上述应用之前,先在数据库中创建相应的表,在命令行(终端)键入

$python  manage.py migrate




migrate查看INSTALLED_APPS设置并根据mysite/settings.py文件中的数据库设置创建任何必要的数据库表,数据库的迁移还会跟踪应用的变化。

工程目录下多一个数据库的文件,db.sqlit3下图所示:




如果不需要它们中的任何一个或所有应用,可以在运行migrate之前INSTALLED_APPS中自由地注释或删除相应的行。migrate 命令将只为INSTALLED_APPS中的应用运行数据库的迁移。


开发服务器


验证django项目是否工作,首先转到(cd)外层的mysite 目录下,键入命令:

$python  manage.py runserver

运行后出现以下内容,表明服务器启动了!




这表明你已经启动了Django开发服务器,一个用纯Python写的轻量级Web服务器。 我们在Django中内置了它,这样你就可以在不配置用于生产环境的服务器——例如Apache——的情况下快速开发出产品,直到你准备好上线。

注意:不要在任何生产环境使用这个服务器,它仅仅是用于在开发中使用。


既然服务器已经运行,请用你的浏览器访问 http://127.0.0.1:8000/。在淡蓝色背景下,你将看到一个“ It worked”的页面!




修改端口号


默认情况下,runserver命令在内部IP8000端口启动开发服务器。

如果需改变服务器的端口,把要使用的端口作为一个命令行参数传递给它。 例如,这个命令在8080端口启动服务器,键入命令:

$python  manage.py runserver  8080




8080的服务已经开启,访问浏览器:





创建模型


编写的每个Django应用都是遵循特定约定且包含一个Python包。 Django自带一个工具,它可以自动生成应用的基本目录结构,这样你就能专心于书写代码而不是创建目录。


项目 vs. 应用


项目和应用之间有什么不同? 应用是一个Web应用程序,它完成具体的事项,比如一个博客系统、一个存储公共档案的数据库或者一个简单的投票应用。 项目是一个特定网站中相关配置和应用的集合。一个项目可以包含多个应用。一个应用可以运用到多个项目中去。

应用可以放在Python path上的任何位置,我们将在你的manage.py文件同级目录创建我们的投票应用,以便可以将它作为顶层模块导入,而不是mysite的子模块。

要创建应用程序—投票应用,确保与manage.py在同一目录中。键入命令:

$ python manage.py startapp polls




在工程目录中会多了一个文件夹,polls




其目录结构如下:




polls应用将基于这个目录结构,当编写一个数据库驱动的Web应用时,第一步就是定义该应用的模型,本质上,就是定义该模型所对应的数据库设计及其附带的元数据。

原理:模型指出了数据的唯一、明确的真实来源。 它包含了正在存储的数据的基本字段和行为,Django遵循DRY (Don't repeat yourself)原则。这个原则的目标是在一个地方定义你的数据模型,并自动从它获得需要的信息。

迁移工具也符合以上哲学,这不同于Ruby On Rails中的迁移;例如,迁移完全依照于模型文件且本质上只是一个历史记录,Django通过这个历史记录更新你的数据库模式使它与你现在的模型文件保持一致


在这个简单的投票应用中,我们将创建两个模型: Question和Choice。Question对象具有一个question_text(问题)属性和一个publish_date(发布时间)属性。 Choice有两个字段:选择的内容和选择的得票统计。 每个Choice与一个Question关联。

这些概念通过简单的Python类来表示。 编辑polls/models.py文件:




上述代码非常直观。每个模型都用一个类表示,该类继承自django.db.models.Model。每个模型都有一些类变量,在模型中每个类变量都代表了数据库中的一个字段。

每个字段通过Field类的一个实例表示,例如字符字段CharField和日期字段DateTimeField。这种方法告诉Django,每个字段中保存着什么类型的数据。

每个 Field 实例的名字(例如question_text 或 pub_date)就是字段的名字,并且是机器可读的格式。你将在Python代码中使用到它的值,并且你的数据库将把它用作表的列名。


某些Field 类具有必选的参数。例如,CharField要求您给它一个max_length。 这个参数不仅用于数据库模式,而且数据验证中也会用到,我们稍后会看到。Field 还具有各种可选参数。在这个例子中,我们设置votes字段的默认值 为0。

最后,注意我们使用ForeignKey定义了一个关联。它告诉Django每个Choice都只关联一个Question。

Django支持所有常见的数据库关联:多对一、多对多和一对一。
























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值