[Python] 使用Django开发Web框架


 Django Web框架简介
Django 项目是一个 python[1]定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:

用于创建模型的对象关系映射
为最终用户设计的完美管理界面
一流的 URL 设计
设计者友好的模板语言
缓存系统。
Django符合MTV架构


Django的安装
Django的安装有两种方法, 这里采用第二种方法,即Option 2. Get the latest development version,具体如下:
[plain] 
[dw_mon@TDDBA ~]$ git clone https://github.com/django/django.git 
[dw_mon@TDDBA install]$ cd django 
[dw_mon@TDDBA django]$ python setup.py install 

[dw_mon@TDDBA ~]$ git clone https://github.com/django/django.git
[dw_mon@TDDBA install]$ cd django
[dw_mon@TDDBA django]$ python setup.py install安装成功后,就可以使用Django的管理工具了django-admin.py
Django项目和应用程序
通过以下命令创建一个Django项目:
[plain] 
[dw_mon@TDDBA project]$ django-admin.py startproject eshop 

[dw_mon@TDDBA project]$ django-admin.py startproject eshop
以上命令会在当前目录下创建eshop的文件夹(即项目),其中包含了运行 Django 项目所需要的基本配置文件:
[plain]
[dw_mon@TDDBA eshop]$ ls 
__init__.py  settings.py  urls.py  wsgi.py 

[dw_mon@TDDBA eshop]$ ls
__init__.py  settings.py  urls.py  wsgi.py


接着,我们要在该项目下创建一个应用程序order:
[plain] 
[dw_mon@TDDBA eshop]$ python manage.py startapp order 

[dw_mon@TDDBA eshop]$ python manage.py startapp order以上命令会在当前目录下创建一个prodcuts目录,该目录有如下文件:
[plain] view plaincopyprint?
[dw_mon@TDDBA eshop]$ cd order 
[dw_mon@TDDBA products]$ ls 
admin.py  __init__.py  models.py  tests.py  views.py 

[dw_mon@TDDBA eshop]$ cd order
[dw_mon@TDDBA products]$ ls
admin.py  __init__.py  models.py  tests.py  views.py

提供应用程序在项目中的位置纯粹是为新 Django 开发人员建立的一种惯例,并不是必需的。
为了使 Django 认识到新应用程序的存在,还需要向 settings.py 文件中的 INSTALLED_APPS 添加一个条目:

[plain] 
INSTALLED_APPS = ( 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    <STRONG>'order',</STRONG> 

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'order',
)
Django数据模型
Django 提供了自己的对象关系型数据映射组件(object-relational mapper,ORM)库,它可以通过 Python 对象接口支持动态数据库访问。


ORM 目前提供了对 PostgreSQL、MySQL、SQLite 和 Microsoft® SQL 数据库的支持。

这里采用默认的SQLite,SQLite 只需要指定数据库引擎和数据库名即可,而其它数据库还需要制定用户名、密码等。
(settings.py 文件中的 DATABASES)
[plain] 
DATABASES = { 
    'default': { 
        'ENGINE': 'django.db.backends.sqlite3', 
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

下面编辑order/models.py模块,定义Python对象与数据库表中的映射关系。
[plain] 
from django.db import models 
 
class Product(models.Model): 
    name = models.CharField('product name', max_length=30) 
    price = models.FloatField('price', default=10) 
 
    def __unicode__(self): 
        return "%s --> %f" %(self.name,self.price) 

from django.db import models

class Product(models.Model):
    name = models.CharField('product name', max_length=30)
    price = models.FloatField('price', default=10)

    def __unicode__(self):
        return "%s --> %f" %(self.name,self.price)

 

然后,运行以下命令就可以在数据库中创建表:


[plain] 
[dw_mon@TDDBA eshop]$ python manage.py syncdb 

[dw_mon@TDDBA eshop]$ python manage.py syncdb

注意,syncdb 命令要求我们创建一个超级用户帐号。这是因为 django.contrib.auth 应用程序(提供基本的用户身份验证功能)默认情况下是在 INSTALLED_APPS 设置中提供的。超级用户名和密码用来登录将在下一节介绍的管理工具。记住,这是 Django 的超级用户,而不是系统的超级用户。


上面的命令执行完之后,会产生一个db.sqlite3文件用于存储数据文件:
[plain] 
[dw_mon@TDDBA eshop]$ ls 
db.sqlite3  eshop  manage.py  order 

[dw_mon@TDDBA eshop]$ ls
db.sqlite3  eshop  manage.py  order
Django的管理工具
管理工具是 Django 提供的一个应用程序。与 order 应用程序一样,在使用之前也必须进行安装。第一个步骤是将应用程序的模块(django.contrib.admin)添加到 INSTALLED_APPS 设置中:

[plain]
INSTALLED_APPS = ( 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'order', 
    <STRONG>'django.contrib.admin',</STRONG> 

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'order',
    'django.contrib.admin',
)

使管理工具可以通过 urls.py 使用(编辑urls.py文件):

[plain] 
from django.conf.urls import patterns, include, url 
 
from django.contrib import admin 
admin.autodiscover() 
 
urlpatterns = patterns('', 
    # Examples: 
    # url(r'^$', 'eshop.views.home', name='home'), 
    # url(r'^blog/', include('blog.urls')), 
 
    <STRONG>url(r'^admin/', include(admin.site.urls)),</STRONG> 

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'eshop.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
)
这个管理应用程序有自己的数据库模型,但也需要进行安装。我们可以再次使用 syncdb 命令来完成这个过程:
[plain] view plaincopyprint?
[dw_mon@TDDBA eshop]$ python manage.py syncdb 

[dw_mon@TDDBA eshop]$ python manage.py syncdb

要查看这个管理工具,可以使用 Django 提供的测试服务器。

 

[plain]
[dw_mon@TDDBA eshop]$ python manage.py runserver 10.249.76.133:8004 
Validating models... 
 
0 errors found 
May 12, 2013 - 15:10:59 
Django version 1.6, using settings 'eshop.settings' 
Starting development server at http://10.249.76.133:8004/ 
Quit the server with CONTROL-C. 

[dw_mon@TDDBA eshop]$ python manage.py runserver 10.249.76.133:8004
Validating models...

0 errors found
May 12, 2013 - 15:10:59
Django version 1.6, using settings 'eshop.settings'
Starting development server at http://10.249.76.133:8004/
Quit the server with CONTROL-C.
现在可以使用http://10.249.76.133:8004/admin 启动管理工具,并使用前面创建的超级用户帐号进行登录。


把自己定义的模块注入到管理工具
为了让管理工具可以管理我们之前定义的product对象,我们需要在order目录下编辑admin.py文件,注册自己的模块。
[plain] 
from django.contrib import admin 
<STRONG>from models import Product 
# Register your models here. 
admin.site.register(Product)</STRONG> 

from django.contrib import admin
from models import Product
# Register your models here.
admin.site.register(Product)
刷新一下网页,就可以发现Product出现在管理页面。

相关内容

    暂无相关文章

评论关闭