Django的应用部署

简介:

一、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,如需转载请自行联系原作者



相关文章
|
4月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
108 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
7天前
|
运维 监控 Serverless
Serverless 应用引擎产品使用之阿里函数计算中在自定义环境下用debian10运行django,用官方层的python3.9,配置好环境变量后发现自定义层的django找不到了如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
16 3
|
18天前
|
Python
基于Django的Python应用—学习笔记—功能完善
基于Django的Python应用—学习笔记—功能完善
|
18天前
|
存储 数据库 数据安全/隐私保护
基于Django的Python应用——学习笔记
基于Django的Python应用——学习笔记
|
18天前
|
API 数据库 数据安全/隐私保护
基于Django的python小应用——投票
基于Django的python小应用——投票
|
20天前
|
消息中间件 监控 数据库
Django的异步任务处理:提升应用响应速度与性能
【4月更文挑战第15天】Django通过集成Celery实现异步任务处理,提升Web应用性能和响应速度。异步处理用于耗时操作如数据库操作、邮件发送。基本步骤包括安装配置Celery、创建任务、在视图中调用任务并启动worker。应用场景包括发送通知、处理复杂逻辑和数据导入导出。注意任务原子性、优先级设置和任务执行监控。
|
20天前
|
开发者 Python
Django的信号机制:实现应用间的通信与响应
【4月更文挑战第15天】Django信号机制实现跨组件通信,基于订阅/发布模式,允许在事件(如模型保存、删除)发生时触发自定义函数。内置信号如`pre_save`、`post_save`,也可自定义信号。使用包括定义信号、连接处理器和触发信号。常用于模型操作监听、第三方应用集成和跨应用通信。注意避免滥用和保证处理器健壮性。信号机制提升代码可维护性和扩展性。
|
20天前
|
自然语言处理 中间件 开发者
Django的国际化与本地化支持:打造多语言应用
【4月更文挑战第15天】Django,一款强大的Web框架,内置出色的支持国际化和本地化功能,使得创建多语言应用变得简单。本文介绍了国际化(i18n)与本地化(l10n)的概念,阐述了Django的相应机制,包括标记可翻译字符串、提取与翻译、设置语言和地区、本地化格式处理。遵循文中步骤,开发者能有效构建适应不同语言和地区需求的Web应用,提升用户体验。
|
20天前
|
中间件 API 文件存储
Django的扩展包与中间件:增强应用功能的利器
【4月更文挑战第15天】本文介绍了Django的扩展包和中间件,两者用于增强Django应用功能。扩展包是可重用的应用,提供额外功能,如用户认证和API开发。选择合适的扩展包,通过安装、配置,可轻松集成到项目中。中间件则在请求和响应之间执行操作,如身份验证和权限控制。创建中间件类并添加到settings.py中,实现特定功能。扩展包和中间件常结合使用,以实现更复杂的应用需求,提高开发效率和应用性能。
|
20天前
|
安全 JavaScript Go
跨站脚本攻击(XSS)防护在Django中的应用
【4月更文挑战第15天】本文介绍了Django如何防范XSS攻击。Django模板引擎自动转义HTML以防止恶意脚本,提供`mark_safe`函数和CSRF防护。此外,建议开发者验证清理用户输入、使用内容安全策略、更新库以及遵循安全编码实践来增强防护。通过这些措施,开发者能构建更安全的Web应用。