首先,搭载好环境
-) 此处用的是centOS6.4+vim7.2+python2.6+Django1.6 -) 为项目创建一个工作目录,mkdir /test/djcode
Django创建项目
-) 进入之前创建的工作目录下,运行django提供的工具django-admin.py 创建一个项目,django-admin.py startproject mysite; startproject是选项,这个选项将为项目提供一套web解决方案,即一套文件系统.mysite是项目名称;此时,项目已经建立,下面简单了解下项目产生的文件和Django自身的框架文件
-) 项目文件 项目根目录 :mysite 根目录 mysite根目录:manage.py文件、mysite目录 mysite目录 :__init__.py、settings.py、urls.py、wsgi.py
Django 项目文件系统简述
-) manage.py :一种命令行工具,允许你以多种方式与该Django项目进行交互,在这个目录下生成纯属为了方便 -) __init__.py:定义模块 -) settings.py:项目的配置文件 -) urls.py :URL映射 -) wsqi.py :
Django 框架文件系统简述,主目录位于/usr/lib/python2.6/site-packages/django
-) __init__.py :粘聚同级目录下的所有文件为一个模块包 -) bin/ :django提供的工具 -) contrib/ :功能模块 -) db/ :处理与数据库相关的,ORM -) forms/ :处理html的表单 -) middleware/ :中间件,处理http的request和response的,类似插件 -) template/ :模板 -) test/ : -) views/ :最基本的view方法 -) conf/ :配置:1)处理全局配置,比如数据库、加载的应用、MiddleWare等.2)处理URLs配置,就是URL与view的映射关系 -) core/ :核心处理库,包括url分析、处理请求、缓存等 -) dispatch/ :pydispatch库,主要处理 消费者-工作者模式 -) http/ : -) shortcuts/ : -) templatetags/:处理application的tag的wrapper -) utils/ :公共库,很多公用的类都放在这里
Django 服务器的启动
-) python manage.py runserver 8000;键入此命令即启动了Django自带的小型服务器.并启动和检视最后的参数-端口,这个端口可以省略,缺省下是8000,可任意修改,unix可以键入命令ifconfig来查看本机(虚拟机)ip地址
开始第一个项目前预热
-) 一个Hello world网页的结构
我的第一个网页
Hello World
-) 保存为.html类型,并存放在项目目录下,启动服务器,以绝对路径来访问
Django 下Hello world网页的结构
-) 一个Hello world 的视图结构,Django的世界里,每个页面对应一个函数,这个函数叫视图函数;分析请看下面的analysis.
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world")
-) 保存.py类型,起名为views.py,名字随便起,这里为了可读性
-) 视图(函数)与url的映射结构,打开文件urls.py,去掉注释后为;代码如下,分析见analysis
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
)
-) 建立视图与url的映射,代码如下,分析见analysis
from django.conf.urls import patterns, include, url
from mysite.views import hello
urlpatterns = patterns('',
('^hello/$,hello),
)
-) 之前已经python manage.py runserver启动了服务器,现在打开浏览器,键入127.0.0.1:8000/hello/,OK,第一个网页已经建成了
---------------------------------------------------------------
analysis.Django 下Hello world视图函数的分析
-) from ,python的关键字,后接模块名; 完整格式为:from 模块名 import 函数、类、*;这种用法一般是为了导入单个函数或类;其中模块的概念可大可小,小则是一个.py文件,大则为一个目录下的所有.py文件,小则叫模块,大则叫模块包
-) django.http,其中django是一个模块包,http是一个模块 -) import ,关键字,导入的意思,在from后面出现则是要导入函数或类,这里接HttpResponse,表示一个类 -) 定义一个hello视图函数,第一个参数必须是django.http.HttpRequest类的一个实例,这是一个触发这个视图、包含当前web请求信息的对象 -) 返回HttpResponse对象,这个对象包含了文本"Hello world"analysis.Django下Hello world视图函数的url分析
-) 第一行导入了patterns函数 -) 第二行调用了patterns函数并将返回结果保存到urlpatterns变量,函数当前只有一个参数一个空的字符串.这个字符串可以被用来表示一个视图函数的通用前缀 -) 当前应当注意urlpatterns变量,Django期望能从ROOT_URLCONF模块中找到它.该变量定义了URL以及用于处理这些URL的代码之间的映射关系analysis.建立视图与url的映射分析
-) 第二行从mysite.views模块导入了hello函数,mysite.views模块等于mysite/views.py文件,这里注意搜索路径问题; -) 第五行添加了('^hello/$',hello),这是python的元组,第一个元素是模式匹配字符串(正则表达式);第二个元素是那个模式将使用的视图函数;^符号表示匹配的开始,$符号表示匹配的结束,这两个符号都不匹配任何字符,只是声明开始和结束;如果这里不加入正则表达式,则缺省是模糊搜索,任何包含hello/字符的url都将被命中