一、Django简介

Django的官方站点https://www.djangoproject.com

Django的安装方法:https://www.djangoproject.com/download/


Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。


Django 项目是一个python定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:  

1.用于创建模型的对象关系映射

2.为最终用户设计的完美管理界面

3.一流的 URL 设计

4.设计者友好的模板语言

5.缓存系统。


二、Django的安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
1、Django的安装
wget https: //www .djangoproject.com /download/1 .5.11 /tarball/  -O Django-1.5.11. tar .gz
tar  xf Django-1.5.11. tar .gz
cd  Django-1.5.11
python setup.py  install
 
 
2、验证Django是否安装成功并查看版本信息
>>>  import  django
>>> django.get_version()
'1.5.11'
 
3、如何卸载Django的安装包
python setup.py  install  --record files.txt          #记录安装后文件的路径
cat  files.txt |  xargs  rm  -rf                 #删除这些文件
 
4、查看django-admin.py的命令行参数
# django-admin.py --help |tail -15
     shell
     sql
     sqlall
     sqlclear
     sqlcustom
     sqlflush
     sqlindexes
     sqlinitialdata
     sqlsequencereset
     startapp
     startproject       
     syncdb
     test
     testserver
     validate


三、第一个Django工程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
1、创建一个新工程
# django-admin.py startproject csvt01
# cd csvt01/
# tree ./
./
└── csvt01              #手动创建的工程目录
     ├── csvt01          #工程名称
     │   ├── __init__.py      #让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。
     │   ├── settings.py      #该 Django 项目的设置或配置
     │   ├── urls.py          #该 Django 项目的 URL 声明,即 Django 所支撑站点的内容列表
     │   └── wsgi.py
     └── manage.py           #一种命令行工具,可让你以多种方式与该 Django 项目进行交互。
 
 
2、启动django服务
注释:启动Django服务的时候,如果runserver后不加ip:port,则默认使用本地的回环地址+8000端口。
# python manage.py runserver
Validating models...
 
0 errors found
November 08, 2014 - 21:02:50
Django version 1.5.11, using settings  'csvt01.settings'
Development server is running at http: //127 .0.0.1:8000/
Quit the server with CONTROL-C.
 
 
注释:启动Django服务的时候,我们可以为其制定地址和端口号。
# python manage.py runserver 0.0.0.0:8000
Validating models...
 
0 errors found
November 08, 2014 - 21:03:33
Django version 1.5.11, using settings  'csvt01.settings'
Development server is running at http: //0 .0.0.0:8000/
Quit the server with CONTROL-C.
 
3、浏览器访问测试
浏览器访问方式:

wKiom1RhsYbzRKdGAAHlhUrTpZ4240.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
4、Django日志输入信息如下:
# python manage.py runserver 0.0.0.0:8000
Validating models...
 
0 errors found
November 10, 2014 - 23:52:19
Django version 1.5.11, using settings  'csvt01.settings'
Development server is running at http: //0 .0.0.0:8000/
Quit the server with CONTROL-C.
[10 /Nov/2014  23:52:42]  "GET / HTTP/1.1"  200 1957
[10 /Nov/2014  23:54:51]  "GET / HTTP/1.1"  200 1957
[10 /Nov/2014  23:54:51]  "GET / HTTP/1.1"  200 1957
[10 /Nov/2014  23:54:51]  "GET / HTTP/1.1"  200 1957
[10 /Nov/2014  23:54:52]  "GET / HTTP/1.1"  200 1957
[10 /Nov/2014  23:54:52]  "GET / HTTP/1.1"  200 1957


四、Django的静态"Hello World!"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
1、新建views.py视图文件
注释:    默认此文件不存在
代码解释:调用django.http模块里面的HttpResponse模块返回数据,然后定义一个hello函数, return 返回函数内容
# vim csvt01/views.py
from django.http  import  HttpResponse
 
def hello(request):
         return  HttpResponse( "Hello World!" )
 
3、配置urls.py
# vim urls.py
from django.conf.urls  import  patterns, include, url
from csvt01.views      import  hello  #从csvt01下的views.py文件中导入hello的自定义函数
 
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
 
urlpatterns = patterns( '' ,
     # Examples:
     # url(r'^$', 'csvt01.views.home', name='home'),
     # url(r'^csvt01/', include('csvt01.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)),
       url(r '^hello/$' ,hello), 
#我刚开始学习Django的时候,在这里就犯了糊涂,一直没有明白这里的url是怎么配置的和里面的含义,当我把Django Book看过后,才恍然大悟...原来是这样的。于是自已才又重新整理了这篇博文,也是希望和我一样对Dagios一样感兴趣的朋友们,少走一些弯路。
举例:
url(r '^hello/$' ,hello)
那么,我就针对上面这个参数进行解释:首先格式是固定的url( ***,***),其中r的作用就是对参数中存在特殊字符比如\n等,那么当做普通字符对待,不当做换行符使用。^和$表示开头和结尾是正则表达式的写法。那么两个hello是什么意思呢?当时我就困惑在这里,第一个hello额可以是任意的定制,你可以写1也可以写2 或者写成其它的任意基本都可以,其实就是一个url访问路径。后面的hello就是视图里里面定义的函数。当我们访问ip:port /hello 的时候就会调用hello函数,并返回hello函数定义的内容。
)
 
4、重新启动django
# python manage.py runserver 0.0.0.0:8000
 
5、浏览器访问测试
http: //ip :port /hello
浏览器输出“hello world”;表示成功。

wKiom1RhtOjCMxiYAAB8OO6rvqs252.jpg


五、Django的"静态url"

1、首先看datetime模块的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type  "help" "copyright" "credits"  or  "license"  for  more  information.
>>>  import  startup
>>>  import  datetime
>>> help(datetime.datetime.now)     #查看帮助语法
Help on built- in  function  now:
 
now(...)
     [tz] -> new datetime with tz's  local  day and  time
     
  >>> datetime.datetime.now()
datetime.datetime(2014, 11, 11, 14, 27, 20, 959250)
注释:那么我们就在网页上显示此函数,当用户每次刷新网页的时候,会自动返回当前时间

2、定义views和url

wKioL1Rhu16wqeb4AAEp3iMAmWA495.jpg

wKiom1Rhuxmx1kzgAALr3Zei2pE216.jpg


3、浏览器访问

wKioL1Rhu5uiqd91AACMSRHNACM241.jpg


五、Django的"动态url"

1、设计是这样的:当前时间+偏差量

/time/plus/1/ #显示的当前时间

/time/plus/2/ #显示的当前时间+1小时

/time/plus/3/ #显示的当前时间+2小时

/time/plus/4/ #显示的当前时间+3小时

wKiom1Rhvh-T6cPNAAEt4nxpxi0915.jpg

比较简单的做法就是用python的正则表达式来实现:

那么我们就来看几个正则表达式的使用方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
010-12345678;想必大家看到这个应该都不会感到陌生吧!座机号
对于座机号的要求:区号-分机号,这里做实验为了方便假设,区号必须是3为,中间的 "-" 可以不写,但是如果写了,仅能出现一次,结尾的的分机号必须是8位结束。于是就出现了下面的正则表达式。
说道正则表达式,不得不提到python的re模块。首先导入re模块。
>>>  import  startup
>>>  import  re
>>> pata1 = r "^\d{3}-?\d{8}$"     #所要匹配的正则表达式
 
###以下不是为正则表达式的测试
>>> re.findall(pata1, "010-12345678" )     #正常匹配
[ '010-12345678' ]
 
>>> re.findall(pata1, "010-123456789" )     #分机号多一位少一位都当做匹配失败
[]
>>> re.findall(pata1, "010-1234567" )       #分机号多一位少一位都当做匹配失败
[]
 
>>> re.findall(pata1, "01012345678" )       #中间的"-"可以不写,但是如果写了,只能出现一次
[ '01012345678' ]
>>> re.findall(pata1, "010--12345678" )     #中间的"-"可以不写,但是如果写了,只能出现一次
[]
 
>>> re.findall(pata1, "8810-12345678" )     #区号只能是3位,或多或少都当做匹配失败
[]
>>> re.findall(pata1, "10-12345678" )       #区号只能是3位,或多或少都当做匹配失败
[]
 
>>> re.findall(pata1, "aaa-aaaaaaaa" )      #只能是数字,字母也无效
[]
 
常用的一些正则表达式:
^    表示开头
$    表示结尾
?    表示前面的字符出现0或者更多次a?
*    表示前面的字符至少出现1次或者更多次abc*
{}   表示前面的字符可以出现多少次,{2,5}至少出现2次,最多出现5次
\d   表示任意数字[0-9] 
[]   表示范围[0-9],[a-z],[a-zA-Z]


2、配置url和views文件

wKiom1RhzpGw-m97AALEKWAOoSE713.jpg

wKiom1RhzpSyrtL2AANIf_h-eAQ575.jpg

3、浏览器测试访问

wKiom1Rhzz-QcDDzAAC8e52kCHM981.jpg

wKiom1Rhzz_hX3u5AAC6TOpwlEo913.jpg

wKioL1Rhz6vzw19uAAC6rz6I5rY170.jpg

wKioL1Rhz8TT3yeYAAHG-3Wdhmg967.jpg

以上错误是由于url正则表达式的匹配失败,所以返回错误!做一些修改!

wKiom1Rhz9HwLlJpAANbOehhJQw809.jpg

wKioL1Rh0DyyfbwhAADEv1UJT2s942.jpg

好了,这篇博文就到这里吧。期待和大家有更多的交流!








     本文转自zys467754239 51CTO博客,原文链接:http://blog.51cto.com/467754239/1574936,如需转载请自行联系原作者



Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐