Django(一)

作者 Claymore 日期 2017-04-27
Django(一)

概述

2003年根据一爵士音乐家Django命名,意味着能优雅的演奏(开发)功能丰富的乐曲(web应用)。

是功能最完善的web框架,意味着各模块间紧密耦合。主要特点:

  • 完善的文档。http://usyiyi.cn/translate/django_182/contents.html
  • 集成数据访问组件:Django的model层自带数据库ORM组件,使开发者无须学习其他数据库访问技术(dbi,SQLAlchemy)等。
  • URL映射技术:正则表达管理URL映射。
  • 后台管理系统自动生成,几行配置和代码就可以实现完整的后台数据web控制台
  • 错误信息非常完整。调试时的错误信息非常完整。

组成结构:

遵循MVC架构的web开发框架。

  • 管理工具(management):内置的创建站点,迁移数据,维护静态文件的命令工具。
  • 模型(Model): 提供数据访问接口和模块,包括数据字段,元数据,数据关系的定义和操作。
  • 视图(View): Django的试图封装了HTTP Request 和 Response 的一系列操作和数据流,主要包括URL映射,绑定模板
  • 模板(Template): 是一套Django自己的页面渲染模板语言,用于内置的tags和filters定义页面的生成方式。
  • 表单(Form):通过内置的数据类型和控件生成HTML表单。
  • 管理站(Admin): 管理Model,快速生成后台数据管理网站。

安装

pip install django

验证是否成功:

#python
>>>import django
>>>print django.VERSION

目录

建立项目

用django-admin建立Django项目,语法如下:

#django-admin startproject 项目名称

django-admin是安装好DJango组件后再Python目录中生成的Django项目管理工具。

eg:

#django-admin startprotject djangosite

会在当前目录中建立了一个子目录djangosite,并生成了django开发默认的文件,:

  • manage.py: 是管理本项目的命令行工具,之后进行站点运行、数据库自动生成,静态文件收集等都要通过该文件生成。
  • 内层djangosite/目录中包含了本项目的实际文件,同时应为其中包含__init__.py文件,该目录也是一个python包。
  • djangosite/settings.py 配置文件,定义了引用的django组件,django项目名等。后续中配置数据库参数等。
  • djangosite/urls.py :维护项目的url 路径映射。默认只定义了/admin即管理员站点的解释器。
  • djangosite/wsgi.py: 定义WSGI的接口信息,用于与其他web服务器集成,一般文件在生成后无需改动。

建立应用

#python manage.py startapp 应用名称

此时的目录和结构:

  • admin.py:管理站点模型的声明文件,默认为空
  • app.py : 应用信息定义文件。生成了类AppConfig,该类用于定义应用名等Meta数据。
  • migrations包: 用于在之后定义引用迁移功能。
  • models.py包:添加模型层数据类的文件。
  • tests.py:测试代码文件。
  • views.py: 定义URL响应函数。

开始

在djangosite/app/views.py 中建立一个路由响应函数:

from django.http import HttpResponse
def welcome(request):
return HttpResponse("<h1>Hello world!</h1>")

定义了一个函数,返回被HttpResponse()包装的welcome信息。

下面要通过URL映射将用户的HTTP访问与该函数绑定起来。

diangosite/app/新建urls.py文件,管理app中的所有url映射。

urls.py:

from django.conf.urls import url #所有路由映射函数都由该函数生成。
from . import views
url_patterns=[
url(r'',view.welcome)
]

接下来在djangosite/urls.py中urlpatterns增添一项,声明对应用app中urls.py文件的引用,代码如下:

from django.conf.urls import url
from django.contrib import admin
from django.conf.urls import include
urlpatterns = [
url(r'^app/', include('app.urls')),
url(r'^admin/', admin.site.urls),
]

注意 : url()函数的第一个参数用正则表达式来表达URL路由,新添的代码表示所有以app开头的路由。

启动

#python manage.py runserver 127.0.0.1:5000

runserver是启动网站的关键字。

访问127.0.0.1:5000/app/ 即可看到hello world.