使用 Python 和 Django 搭建 Web 应用

使用 Python 和 Django 搭建 Web 应用
简介
Django 是 Python 开发的 Web 框架。使用 Django 搭建 Web 应用很方便。

写本文时 django 的最新版本为 1.4,但本文不关注新版本的特性,只搭建一个简单的应用。

安装 Django
本文以 CentOS 6.2 为例进行安装:
安装 python

# yum install python
本文使用的是 CentOS 6.2 Desktop,默认安装了 python. 查看一下 python 的版本

# python --version
Python 2.6.6
Django-1.4 支持 python 2.5 以上( python3 暂不支持)。具体请看 Django的官方博客。
根据 python 的版本安装 setuptools,pip(使用pip安装软件很方便,pip 依赖 setuptools),安装 setuptools 很简单,到其 pipy 下载并安装(注意跟 python 的版本对应)。

# curl -O http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11-py2.6.egg
# sh setuptools-0.6c11-py2.6.egg
# curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
# python get-pip.py
本文关注 django ,暂不考虑 virtualenv,buildout 等虚拟环境的安装。
安装 django

# pip install django
查看 django 的版本

$ django-admin.py --version
1.4
创建Django项目及Web应用
使用 django 搭建 Web 应用很快。

$ mkdir ~/dev
$ cd ~/dev
创建项目,使用 django-admin.py 的 startproject 命令。

~/dev$ django-admin.py startproject djdemo
django-1.4 创建的目录结构较以前的版本有了些调整,本文例子如下:

.
`--djdemo
   |--djdemo
   |  |--__init__.py
   |  |--settings.py
   |  |--urls.py
   |  `--wsgi.py
   `--manage.py
创建应用,使用 manage.py 的 startapp 命令,本文创建一个订单(Order)的例子。

$ cd djdemo
~/dev/djdemo$ python manage.py startapp orders
django 会自动创建此应用的基本文件,目录如下:

.
`--djdemo
   |--djdemo
   |  |--__init__.py
   |  |--settings.py
   |  |--urls.py
   |  `--wsgi.py
+  |--orders
+  |  |--__init__.py
+  |  |--models.py
+  |  |--tests.py
+  |  `--views.py
   `--manage.py
在 orders 文件夹中新建 admin.py ,用于 django 管理工具使用。最终目录如下:

.
`--djdemo
   |--djdemo
   |  |--__init__.py
   |  |--settings.py
   |  |--urls.py
   |  `--wsgi.py
   |--orders
   |  |--__init__.py
+  |  |--admin.py
   |  |--models.py
   |  |--tests.py
   |  `--views.py
   `--manage.py
创建一个 Django 的模型
接下来修改 models.py,管理此应有的模型。 注意:如果使用非 ASCII 码,需要在文件头部添加

    # -*- coding: utf-8 -*-
添加 Order 模型:

# -*- coding: utf-8 -*-
from django.db import models

# Create your models here.
from django.utils.translation import ugettext_lazy as _

class Order(models.Model):
    order_no = models.CharField(max_length=255)
    description = models.CharField(max_length=255)
    created_on = models.DateTimeField(help_text=_(‘creation date‘), auto_now_add = True)
    updated_on = models.DateTimeField(help_text=_(‘last update date‘), auto_now = True)

    def __unicode__(self):
        return self.order_no
这是一个 models 的例子,设计到了属性,国际化,自动填充时间等内容,关于 models,更多请参考 django 网站的 models相关文档。

以下是 admin.py 的内容,使 django 可以管理这个模型。 通常只需要添加就可以了如下例子:

# -*- coding: utf-8 -*-
from django.contrib import admin
from .models import Order

admin.site.register(Order)
但是django可以定制管理界面。如下更改:

# -*- coding: utf-8 -*-
from django.contrib import admin
from django.utils.translation import ugettext_lazy as _

from .models import Order

class OrderAdmin(admin.ModelAdmin):
    """Admin form Order model"""
    list_display = (‘order_no‘, ‘description‘, ‘created_on‘)
    search_fields = (‘order_no‘, ‘description‘)
    fieldsets = (
        (_(‘Content‘), {
            ‘fields‘: (‘order_no‘, ‘description‘)
        }),
        (_(‘Advanced options‘), {
            ‘classes‘: (‘collapse‘,),
            ‘fields‘: (‘created_on‘, ‘updated_on‘)
        }),
    )
    actions_on_top = True
    actions_on_bottom = True
    readonly_fields = ("created_on", "updated_on")

admin.site.register(Order, OrderAdmin)
这是一个 admin 的例子,涉及到了列表显示,搜索,配置界面等,关于 admin,更多请参考 django 网站的文档 admin 相关文档。

配置
主要配置 settings.py 和 urls.py。

在 settings.py 开始添加如下,主要设置路径:

# -*- coding: utf-8 -*-
# Django settings for djdemo project.

import os
import sys

ROOT_PATH = os.path.dirname(os.path.abspath(__file__))

if ROOT_PATH not in sys.path:
    sys.path.append(ROOT_PATH)
修改数据库配置,本文使用 sqlite3,这是 django 自带驱动的,其他的请参考 django 网站的 database 相关文档

DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.sqlite3‘, # Add ‘postgresql_psycopg2‘, ‘mysql‘, ‘sqlite3‘ or ‘oracle‘.
        ‘NAME‘: os.path.abspath(os.path.join(ROOT_PATH, ‘..‘, ‘sqlite.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.
    }
}
接下来修改 INSTALLED_APPS 部分:
将 orders 应用添加到 INSTALLED_APPS 设置中,并去掉 admin 模块的#注释。

INSTALLED_APPS = (
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.sites‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    # Uncomment the next line to enable the admin:
    ‘django.contrib.admin‘,
    # Uncomment the next line to enable admin documentation:
    # ‘django.contrib.admindocs‘,
)
INSTALLED_APPS += (
    ‘orders‘,
)
配置 urls.py。
要让该管理工具可以通过 /admin URL 使用,只需要简单地取消项目的 urls.py 文件中提供的对应行的内容即可。

# -*- coding: utf-8 -*-
from django.conf.urls import patterns, include, url

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns(‘‘,
    # Examples:
    # url(r‘^$‘, ‘djdemo.views.home‘, name=‘home‘),
    # url(r‘^djdemo/‘, include(‘djdemo.foo.urls‘)),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r‘^admin/doc/‘, include(‘django.contrib.admindocs.urls‘)),

    # Uncomment the next line to enable the admin:
    url(r‘^admin/‘, include(admin.site.urls)),
)
此时,程序基本配置完毕,下面开始数据库的初始化和 django 管理界面的使用。

先进行 sql 语句的显示,可以查看表结构是否正确(必须指明应用名称,本文为orders)。使用 manage.py 的 sqlall 命令。

~/dev/djdemo$ python manage.py sqlall orders
得到如下结果

BEGIN;
CREATE TABLE "orders_order" (
    "id" integer NOT NULL PRIMARY KEY,
    "order_no" varchar(255) NOT NULL,
    "description" varchar(255) NOT NULL,
    "created_on" datetime NOT NULL,
    "updated_on" datetime NOT NULL
)
;
COMMIT;
接下来开始数据库初始化,使用 manage.py 的 syncdb 命令, 期间会询问是否添加 superusers,过程如下:

~/dev/djdemo$ python manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table django_admin_log
Creating table orders_order

You just installed Django‘s auth system, which means you don‘t have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use ‘****‘): admin
E-mail address: [email protected]
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
此时数据库初始化完毕。

测试
启动 django,进行应用的测试,使用 manage.py 的 runserver 命令,开启服务。

~/dev/djdemo$ python manage.py runserver
现在可以访问 http://localhost:8000/admin 查看。

  

原文地址:https://www.cnblogs.com/liandeng/p/9539326.html

时间: 2024-11-08 01:59:56

使用 Python 和 Django 搭建 Web 应用的相关文章

Python & PyCharm & Django 搭建web开发环境

一.安装软件 1.安装 Python 2.7.PyCharm.pip(Python包管理工具).Django ( pip install Django) 二.部署 1.PyCharm 新建Django工程 完成后,其目录如下: 子目录MyDjangoProject下表示工程的全局配置,分别为setttings.py.urls.py和wsgi.py,其中setttings.py包括了系统的数据库配置.应用配置和其他配置,urls.py则 表示web工程Url映射的配置. 子目录student则是在

Python & PyCharm & Django 搭建web开发环境(续)

由于Django自带轻量级的server,因此在前篇博文中,默认使用该server,但实际生产中是不允许这么干的,生产环境中通常使用Apache Httpd Server结合mod_wsgi.so来做后端服务器. 以下部署环境为:Python2.7.6 1.安装httpd-2.2.25-win32-x86-no_ssl.msi 2.将下载好的mod_wsgi.so 放在 D:\Program Files\Apache Software Foundation\Apache2.2\modules 模

谈谈Python之Django搭建企业级官网(第三篇下部)

转载请注明来源地址和原作者(CFishHome) 前沿 上一篇文章我们学习了URL与视图函数的映射.传递参数的三种方式.转换器的简单使用和include函数分层映射管理.接下来这一篇文章着重介绍Path.re_path.include.reverse.redirect函数的使用和自定义URL转换器.学完这些内容,相信我们对URL和视图都会有了一定的了解和认识.为了让每篇文章具有一定的独立性,我决定每篇文章都重新新建一个项目,便于测试和调试. 预备 首先,我们在Pycharm重新新建一个名为boo

[Python] 利用Django进行Web开发

第一步:下载并安装django 首先,在Django官网上下载适合自己Python的Django版本,在安装Django前首先确定你已成功安装了python.         Windows系统下安装Django: 解压缩下载的Django压缩包,找到里面的setup.py文件,然后打开cmd命令窗口,在其对应的路径下执行如下命令: python setup.py install Linux系统下安装Django: 以此在shell中输入如下命令: $ tar xzvf Django-*.tar

[Python] 利用Django进行Web开发系列(一)

1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的.Web开发的途径有好多种,比如传统的.Net,还有很火爆的Java.Python作为一种灵活好学的脚本语言,已经越来越受程序员的欢迎和热捧,甚至成为程序员的必备技能.Django是Python的Web开放框架,好多人说学习Python就是在学Django,从这也可以看出Django的强大.博主也是

PyCharm社区版+Django搭建web开发环境

PyCharm开源社区版不像商业版那样可以直接通过Django来创建项目,必须通过以下几个步骤进行: 1. 创建项目:在cmd命令行下输入:django-admin startproject Demo        (cmd命令先进入目录:cd D:\PycharmProjects) 2. 导入项目:打开Pycharm,open,选择刚才创建的项目 3. 创建应用:在cmd命令行下输入:python manage.py startapp web      (cmd命令下先进入Demo所在的目录)

PyCharm社区版+Django搭建web开发环境-1

转自:https://www.cnblogs.com/nzyjlr/p/8565201.html PyCharm开源社区版不像商业版那样可以直接通过Django来创建项目,必须通过以下几个步骤进行: 1. 创建项目:在cmd命令行下输入:django-admin startproject Demo        (cmd命令先进入目录:cd D:\PycharmProjects) 2. 导入项目:打开Pycharm,open,选择刚才创建的项目 3. 创建应用:在cmd命令行下输入:python

python +Django 搭建web开发环境初步,显示当前时间

1.python 的安装 网上很多关于django跟python 开发的资料,这块我正在实习准备用这个两个合起来搞一个基于web 的东西出来现在开始学习,写点东西记录一下心得. 开发环境是windows的,所以我们到python官网下载64位的windows操作系统的安装包: https://www.python.org/ftp/python/3.4.3/python-3.4.3.amd64.msi 这个版本直接添加了系统的环境变量非常的方面(吐槽一下各种开发环境环境变量的配置). 2.Djan

谈谈Python之Django搭建企业级官网(第三篇上部)

转载请注明来源地址和原作者(CFishHome) 前沿 上一节的学前准备工作和第一个小牛试刀的Django项目学习,让我们对Django开发越来越感兴趣了.正所谓趁热打铁,让我们继续来学习网站开发必备的视图函数和URL映射等知识,跟着步伐一起学习,我相信你会收获很多.噔~噔,新闻播报时间:9月12-9月16有两个超强台风在广东湛江登陆,沿途影响众多城市,包括深圳!!所以很遗憾,前几天打算和舍友去深圳游玩的计划泡汤了,也只能推迟几天前往深圳度中秋.看月亮了~ DEBUG模式 无论是使用命令行还是P