您的位置:首页 > 移动开发

Django 1.6.8实战,构建你的第一个App

2014-10-30 22:14 323 查看

1.创建你的第一个project:

Django提供了-个叫django-admin.py的命令来创建一个Django项目及其子目录和模板文件。如:

django-admin.py startproject mysite

执行完以上命令后,会在当前目录下创建一个project目录mysite,及其子目录和文件。如下图所示:




可以看到,创建了一个名为mysite的project目录。在该目录下,包含一个mange.py和一个同名的子目录,而该子目录下又包含了几个以py结尾的文件,如settings.py,urls.py等。

可以这么理解,django-admin.py是Django各个项目的总监/director,负责各个项目的引入和立项。manage.py是具体到某个project的manager,管理项目的各项具体事务,包括对UI显示层、业务逻辑层和数据接入层的整合,创建应用,创建和更新数据库,启动服务器等。settings.py是项目中配置管理员,其负责跟踪和配置库数据库信息,调试标识,安装的应用等;urls.py负责将一个url模式映射到某个具体的视图view的函数.

如果按职能类别划分的话,django-admin.py和manage.py干的都是管理工作,比较高大上,但同样的高大上,它们的级别也是有所不同的;settings,py,和urls.py等则都是基层员工,酒比如俺们程序员这种比较容易出现屌丝的工作,它们没有太多的话语权,按领导指令行事,但它们是整个Django框架运作的基石。

2.创建你的第一个App

总监django-admin.py立项并startproject以后,为整个项目画了一个大的蓝图,与此同时大体规划了项目中可能要使用到的资源(如settings,py这种基层屌丝人力资源)。接下来,就要发挥项目经理manage.py的作用了。毫无疑问,项目经理将drive其所能调配的资源,并为整个框架的用户创造价值。什么能给用户价值呢?当然是app了。项目经理的最终目的就是确保app的创建和发布。对于项目经理来说,app才是他需要管理的project.

以创建一个blog应用为例:




这样项目经理完成了一个app团队的布局,如下图所示:



admin.py是blog app团队的leader。它会向管理层登记所有models.py的数据模型.

models.py是为数据库启动的web应用而服务的。Model是数据访问层,涵盖关于数据的一切信息:如何访问数据,如何验证,数据有什么行为以及数据之间的关系。

views.py处理业务逻辑。它包括了访问model的逻辑.它是model和template的桥梁。在本例中,没有用到它,因为本例的业务逻辑较简单。

通过这样的架构和团队合作,我们可以期待:app一定会按计划deliver!

3.设计你的Model

本例中,model.py设计为:

from django.db import models

# Create your models here.

class BlogPost (models.Model ) :
    title = models.CharField(max_length=150)
    body = models. TextField()
    timestamp = models .DateTimeField( )

Django1.6.8默认采用sqlite3作为其数据库,你也可以通过mysite/settings.py更改为其他数据库引擎。本例中不作修改.

基于以上model,我们进行数据库的同步:

./manage .py syncdb

本例设置超级用户名和密码都为"admin"和“admin”。

4. 设计你的app leader

本例中,admin.py管理BlogPost,将其注册到admin site.代码如下:

from django.contrib import admin
from blog.models import BlogPost

# Register your models here.

admin.site.register(BlogPost)

5.向配置管理员注册你的app:

要想别人能从浏览器访问到你的app,你还需修改mysite/settings.py里的INSTALLED_APPS,将你的app “blog”添加到后面,如下图所示:



6.运行你的第一个app.





7.访问你的app

登陆界面:





登陆成功后:



点击进入Blog:



添加一个blog:





post显示列表:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: