文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>使用django的构建简单的web服务

使用django的构建简单的web服务

时间:2010-06-18  来源:rain_fish

使用django的构建简单的web服务

关于最新版Django 1.2.1 的使用细节。

网上关于使用Django构建web服务器方法很多,但是按照步骤往下走,总是有一些问题,现在总结一下,供初学者学习使用,其中大部分来自网络。

要新建一个Web 项目, 先在命令行的模式下,进入你想建立项目的目录,执行以下命令:django-admin startproject,例如:

~/Python$ django-admin startproject mysite

上面的命令将会在~/Python 下创建mysite 文件夹,其中包含了运行Django 项目的基本配置文件:

__init__.py

 manage.py

 settings.py

 urls.py            

 

 

现在,在项目上建立一个应用程序(aplication),以职位公告板”jobs” 为例子:

~/Python/mysite$ python manage.py startapp jobs

上面将建立一个应用程序的骨架,jobs 目录如下:

 

__init__.py

models.py

views.py

 

 

为了使项目知道新的应用程序存在,需要在settings.py 文件中的INSTALLED_APPS 添加一个条目(‘mysite.jobs’):

INSTALLED_APPS = (

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.sites',

    'django.contrib.messages',

    'djproject.jobs',

    'django.contrib.admin',

    # Uncomment the next line to enable the admin:

    # 'django.contrib.admin',

)
创建一个模型(Model)

Django 提供了自己的对象关系型数据映射组件(object-relational mapper,ORM)库,它可以通过 Python 对象接口支持动态数据库访问。这个 Python 接口非常有用,功能十分强大,但如果需要,也可以灵活地不使用这个接口,而是直接使用 SQL。

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

在新建模型之前,需要对settings.py 文件进行数据库的配置。本例以SQLite3 为例:

 

DATABASES = {

    'default': {

        'ENGINE': 'sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.

        'NAME': '/root/Sqllite/database1.db',                      # Or path to database file if using sqlite3.          'USER': '',                      # Not used with sqlite3.

        'PASSWORD': '',                  # Not used with sqlite3.

        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.

        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.

    }

 

}

这个职位公告板应用程序有两种类型的对象:Location 和 Job。Location 包含 city、state(可选)和 country 字段。Job 包含 location、title、description 和 publish date 字段。jobs/models.py 文件内容如下:

from django.db import models

from django.contrib import admin

 

# Create your models here.

class Location(models.Model):

    city = models.CharField(max_length=50)

    state = models.CharField(max_length=50, null=True, blank=True)

    country = models.CharField(max_length=50)                                                                   

    def __str__(self):

        if self.state:

            return "%s, %s, %s" % (self.city, self.state, self.country)

        else:

            return "%s, %s" % (self.city, self.country)

    class Admin:

        list_display = ("city","state","country")

 

class Job(models.Model):                                                                                             pub_date = models.DateField()

    job_title = models.CharField(max_length=50)

    job_description = models.TextField()

    location = models.ForeignKey(Location)

 

    def __str__(self):

        return "%s (%s)" % (self.job_title, self.location)

    class Admin:

        list_display = ("job_title","location","pub_date")

        ordering = ["-pub_date"]

        search_fields=("jab_title","job_description")

        list_filter = ("location",)

 

admin.site.register(Job)

admin.site.register(Location)

 

__str__ 方法是 Python 中的一个特殊类,它返回对象的字符串表示。Django 在 Admin 工具中显示对象时广泛地使用了这个方法。

执行python manage.py sql jobs 可以看到模型在数据库里的模式:

BEGIN;

CREATE TABLE "jobs_location" (

    "id" integer NOT NULL PRIMARY KEY,

    "city" varchar(50) NOT NULL,

    "state" varchar(50),

    "country" varchar(50) NOT NULL

)

;

CREATE TABLE "jobs_job" (

    "id" integer NOT NULL PRIMARY KEY,

    "pub_date" date NOT NULL,

    "job_title" varchar(50) NOT NULL,

    "job_description" text NOT NULL,

    "location_id" integer NOT NULL REFERENCES "jobs_location" ("id")

)

;

COMMIT;

 

运行数据库命令 syncdb 后,将会初始化并安装这个模型:
~/Python/mysite$ python manage.py syncdb

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

使用带图形界面的Admin 管理工具

Django 的最大卖点之一是其一流的管理界面,为我们的项目提供了很多数据输入工具。实质上,管理工具是也是一个应用程序,不过是Django 内置。与 jobs 应用程序一样,在使用之前也必须进行安装。第一个步骤是将应用程序的模块(django.contrib.admin)添加到 INSTALLED_APPS 设置中。修改 settings.py 的内容如下:

INSTALLED_APPS = (
 ‘django.contrib.auth’,
 ‘django.contrib.contenttypes’,
 ‘django.contrib.sessions’,
 ‘django.contrib.sites’,
 ‘djproject.jobs’,
 ‘django.contrib.admin’,
)

要让该管理工具可以通过 /admin URL 使用必须对URL 进行配置,修改urls.py 的内容如下:

from django.conf.urls.defaults import *

 

# Uncomment the next two lines to enable the admin:

from django.contrib import admin

admin.autodiscover()

 

urlpatterns = patterns('',

    # Example:

    #(r'^djproject/', include('djproject.foo.urls')),

 

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs'

    # to INSTALLED_APPS to enable admin documentation:

    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

 

    # Uncomment the next line to enable the admin:

#    (r'^admin/', include(admin.site.urls)),

    (r'^admin/', include(admin.site.urls)),

 

)

 

这个管理应用程序有自己的数据库模型,但也需要进行安装。我们可以再次使用 syncdb 命令来完成这个过程:

~/Python/mysite$ python manage.py syncdb

启动Django 内置的测试服务器:

[root@localhost djproject]# python manage.py runserver 0.0.0.0:8000

Validating models...

0 errors found

 

Django version 1.2.1, using settings 'djproject.settings'

Development server is running at http://0.0.0.0:8000/

Quit the server with CONTROL-C.

 

在浏览器中输入:http://192.168.128.128:8000/admin/即可看到。

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载