动态的内容
面已经介绍了如何安装django的集成环境了并已经运行起它自带的一个页面,但毕竟不是我们自己的东西,人家生成的终究是人家 的,所以呢,自己动手丰衣足食,下面我们就自己动手做一个自己的djangoweb程序吧,当然还是helloword为例,helloword包含了太多的往忆呀!
原理
我们写个view视图的方法,接受web请求并返回web的应答,当然这个应答可以是HTML内容、重定向、404错误、XML文档、图像等等 ,但是为了简单,我们就直接返回字符串,
那么我们应该将其写在哪呢?当然是随便了但是要保证在python path下以至于python能够找到它,所以我们将其放在views.py并保存到我们上次生成的那个目录下
from django.http import HttpResponse
'''
Created on 2013-3-21
@author: Senssic
'''
def helloword(request):
str="hello word"
return HttpResponse(str)
URL配置
配置URL的目的是URL模式和对应的view函数的映射,当符合某个特定的逻辑就会被调用
所以在我们生成的urls.py做如下配置
from django.conf.urls.defaults import patterns, include, url
from mysite.views import helloword
urlpatterns = patterns('',
(r'^helloword/$',helloword),
)
注:
此处(r'^helloword/$',helloword)为python的元组,是url的映射配置关系,不是调用helloword函数,而是作为一个对象传递的,'^'和'$'符号很重要,前者表示“匹配string的开始的模式”,后者表示“匹配string结束的模式”,还有就是不必在'^now/$'前面增加斜线来匹配/now/,Django自动在每个表达式前面添加斜线 .
好了那我们运行看看结果吧
至此第一个自己的web就弄好了,亲简单吧。
处理原理
命令python manage.py runserver找到settings.py,这个文件包含了这个Django实例的所有配置选项
最重要的设置是ROOT_URLCONF( ROOT_URLCONF = 'mysite.urls'),它告诉Django使用哪个Python模块作为当前站点的URL配置-->>当一个请求进来如/helloword/,Django载入URL配置,然后按顺序检查每个URL模式直到找到一个匹配的URL请求模式,然后Django调用那个模式匹配的方法,并传递一个HttpRequest对象作为第一个
最重要的设置是ROOT_URLCONF( ROOT_URLCONF = 'mysite.urls'),它告诉Django使用哪个Python模块作为当前站点的URL配置-->>当一个请求进来如/helloword/,Django载入URL配置,然后按顺序检查每个URL模式直到找到一个匹配的URL请求模式,然后Django调用那个模式匹配的方法,并传递一个HttpRequest对象作为第一个
参数 -->视图方法负责返回一个HttpResponse对象
关于URL匹配
常用的正则
- Symbol Matches
- .(dot) 任意字符
- \d 任意数字
- [A-Z] 从A到Z的任意字符(大写)
- [a-z] 从a到z的任意字符(小写)
- [A-Za-z] 从a到z的任意字符(大小写不敏感)
- [^/]+ 任意字符直到一个前斜线(不包含斜线本身)
- + 一个或多个前面的字符
- ? 零个或多个前面的字符
- {1,3} 1个到3个之间前面的字符(包括1和3)
所以我们可以构建动态的url
像这样:
(r'^helloword/plus(\d{
1,
2})hours/$', plutsnum),
http://127.0.0.1:8000/helloword/plus300hours/---Django显示“Page not found”错误
http://127.0.0.1:8000/helloword/plushours/也会显示404错误,因为我们只接受1个或2个数字的参数