Python [4] Django的安装和基础运行环境简介

简介:

一、Django简介

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


二、pip的应用

(1)什么是pip???

pip是一个安装和管理Python包的工具,是 easy_install 的一个替换品。

distribute是setuptools的取代(Setuptools包后期不再维护了),pip是easy_install的取代。

pip的安装需要setuptools 或者 distribute,如果你使用的是Python3.x那么就只能使用distribute因为Python3.x不支持setuptools。

(2)安装pip的两种方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
方式1:通过yum的方式安装pip
# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# sed -i 's/^#//' /etc/yum.repos.d/epel.repo
# sed -i 's/mirrorlist/#mirrorlist/' /etc/yum.repos.d/epel.repo
# yum -y install python-pip
 
方式2:通过源码编译安装pip
# wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz
# tar xf setuptools-1.4.2.tar.gz 
# cd setuptools-1.4.2
# python setup.py install 
# easy_install --version
# cd ../
# wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-1.4.1.tar.gz
# tar xf pip-1.4.1.tar.gz 
# cd pip-1.4.1
# python setup.py install

(3)pip的基本使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
安装特定版本的package,通过使用==, >=, <=, >, <来指定一个版本号。
pip安装django,并指定安装的版本
# pip install 'django==1.6.5'
 
pip卸载django
# pip uninstall django
 
pip查询包
# pip search 'django'
 
pip升级包
# pip install -U 'django'
 
列出pip安装的包
# pip freeze


三、安装Django

在linux环境下,安装Django有两种方式

(1)通过pip工具安装django

1
# pip install 'django==1.6.5'

(2)通过源码编译安装django

1
2
3
# tar xf Django-1.6.10.tar.gz 
# cd Django-1.6.10
# python setup.py install

(3)导入django模块并查看版本号,如果没有错误输出,说明django安装是成功的

1
2
[root@localhost ~] # python -c 'import django;print (django.get_version())'
1.6.10


四、Django创建项目和应用

(1)创建一个项目

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost ~] # django-admin.py startproject webproject
[root@localhost ~] # tree ./
./
└── webproject      #外层目录只是你项目的一个容器,可以任意重命名
     ├── manage.py     #一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互
     └── webproject  #目录是你项目中的实际 Python 包。该目录名就是 Python 包名,通过它你可以导入它里面的任何东西
         ├── __init__.py     #一个空文件,告诉 Python 该目录是一个 Python 包
         ├── settings.py     #该 Django 项目的设置/配置   
         ├── urls.py         #该 Django 项目的 URL 声明; 一份由 Django 驱动的网站“目录”  
         └── wsgi.py         #一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目
 
2 directories, 5 files

(2)创建应用程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@localhost ~] # cd webproject/
[root@localhost webproject] # django-admin.py startapp blog
[root@localhost webproject] # tree .
.
├── blog
│   ├── admin.py
│   ├── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
└── webproject
     ├── __init__.py
     ├── settings.py
     ├── urls.py
     └── wsgi.py

(3)修改django配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#需要修改三处位置
[root@localhost ~] # vim webproject/settings.py
INSTALLED_APPS = (
     'django.contrib.admin' ,
     'django.contrib.auth' ,
     'django.contrib.contenttypes' ,
     'django.contrib.sessions' ,
     'django.contrib.messages' ,
     'django.contrib.staticfiles' ,
     'blog' ,      #第一处添加blog应用
)
 
LANGUAGE_CODE =  'zh-cn'        #第二处修改为中文
 
TIME_ZONE =  'Asia/Shanghai'        #第三处修改时区

(4)配置url访问路径

1
2
3
4
5
6
7
8
9
10
[root@localhost ~] # vim webproject/urls.py
urlpatterns = patterns( '' ,
     # Examples:
     # url(r'^$', 'webproject.views.home', name='home'),
     # url(r'^blog/', include('blog.urls')),
 
     url(r '^admin/' , include(admin.site.urls)),
     url(r '^blog$' , 'blog.views.index' ),       #添加一行
     #正则匹配,仅访问到^blog目录就重定向到blog.views中的index方法,所以在views.py里面应该定义好index函数/方法
)

(5)创建视图

1
2
3
4
5
6
7
8
[root@localhost webproject] # vim blog/views.py
from django.shortcuts  import  render
from django.http  import  HttpResponse
 
# Create your views here.
 
def index(req):
     return  HttpResponse( '<h1>hello django!!!</h>' )

(6)运行django服务

1
2
3
4
5
6
7
8
9
10
11
[root@localhost webproject] # python manage.py runserver 0.0.0.0:80
Validating models...
 
0 errors found
February 11, 2015 - 11:58:44
Django version 1.6.10, using settings  'webproject.settings'
Starting development server at http: //0 .0.0.0:80/
Quit the server with CONTROL-C.
[11 /Feb/2015  11:59:23]  "GET / HTTP/1.1"  404 2003
[11 /Feb/2015  11:59:28]  "GET /blo HTTP/1.1"  404 2012
[11 /Feb/2015  11:59:30]  "GET /blog HTTP/1.1"  200 23


五、浏览器访问

wKiom1Ta17eR3THHAAD5nE1KEXk317.jpg


六、模板层(template)

上述是通过调用blog.views中的index方法,返回一个页面!!!

1
2
3
from django.http  import  HttpRespomse
def index(req):
     return  HttpRespose(<h1>hello django!!!< /h1 >)

实际应用中这种方法显然不适合,那么接下来我们就聊聊HTML代码如何嵌套在Django中,有两种方式:

静态页面

方式一:

通过template加载模板,生成Context对象,存放模板所需数据,通过模板对象对数据进行渲染,然后通过HttpResponse输出。


模板文件放在应用程序下面templates目录,这个目录默认不存在需要手动创建


(1)首先查看当前所处的位置和整体项目的目录文件结构

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
[root@localhost webproject] # pwd
/root/webproject
[root@localhost webproject] # tree .
.
├── blog        #应用
│?? ├── admin.py
│?? ├── admin.pyc
│?? ├── __init__.py
│?? ├── __init__.pyc
│?? ├── models.py
│?? ├── models.pyc
│?? ├── tests.py
│?? ├── views.py
│?? └── views.pyc
├── manage.py
└── webproject  #项目
     ├── __init__.py
     ├── __init__.pyc
     ├── settings.py
     ├── settings.pyc
     ├── urls.py
     ├── urls.pyc
     ├── wsgi.py
     └── wsgi.pyc
 
2 directories, 18 files

(2)创建我们的第二个应用www

1
2
3
[root@localhost webproject] # django-admin.py startapp www
[root@localhost webproject] # ls
blog  manage.py  webproject  www

(3)更新项目配置文件,发布新应用并设置url

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@localhost webproject] # vim webproject/settings.py
INSTALLED_APPS = (
     'django.contrib.admin' ,
     'django.contrib.auth' ,
     'django.contrib.contenttypes' ,
     'django.contrib.sessions' ,
     'django.contrib.messages' ,
     'django.contrib.staticfiles' ,
     'blog' ,
     'www' ,       #添加新行
)
 
[root@localhost webproject] # vim webproject/urls.py
urlpatterns = patterns( '' ,
     # Examples:
     # url(r'^$', 'webproject.views.home', name='home'),
     # url(r'^blog/', include('blog.urls')),
 
     url(r '^admin/' , include(admin.site.urls)),
     url(r '^blog$' , 'blog.views.index' ),
     url(r '^www$' , 'www.views.index' ),     #添加新行
)

(4)创建模板目录并生成html文件

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost webproject] # mkdir www/templates
[root@localhost webproject] # cat www/templates/index.html 
<!DOCTYPE html PUBLIC  "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns= "http://www.allentuns.com/1999/xhtml" >
< head >
<meta http-equiv= "Content-Type"  content= "text/html; charset=utf-8"  />
<title>My Django Page< /title >
< /head >
<body>
    <h1>Hello Django!!!< /h1 >
< /body >
< /html >

(5)修改应用的视图文件views

1
2
3
4
5
6
7
8
9
10
11
[root@localhost webproject] # vim www/views.py 
from django.shortcuts  import  render
from django.template  import  loader,Context    #导入django的两个对象loader和Context
from django.http  import  HttpResponse
 
# Create your views here.
 
def index(req):
     t = loader.get_template( 'index.html' #导入模板文件www/templates/index.html
     c = Context({})            #创建Context对象,用于存放提供给模板的数据(用于动态网页)
     return  HttpResponse(t.render(c))

(6)浏览器访问

wKiom1TbEgSTf3FkAADYdYP4iXE356.jpg


方式二:修改方式一(只需修改第五步,其它一样)

1
2
3
4
5
6
7
8
[root@localhost webproject] # cat www/views.py
from django.shortcuts  import  render
from django.shortcuts  import  render_to_response
 
# Create your views here.
 
def index(req):
     return  render_to_response( 'index.html' ,{})






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



相关文章
|
6月前
|
前端开发 JavaScript UED
探索Python Django中的WebSocket集成:为前后端分离应用添加实时通信功能
通过在Django项目中集成Channels和WebSocket,我们能够为前后端分离的应用添加实时通信功能,实现诸如在线聊天、实时数据更新等交互式场景。这不仅增强了应用的功能性,也提升了用户体验。随着实时Web应用的日益普及,掌握Django Channels和WebSocket的集成将为开发者开启新的可能性,推动Web应用的发展迈向更高层次的实时性和交互性。
168 1
|
8月前
|
NoSQL Unix 网络安全
【Azure Cache for Redis】Python Django-Redis连接Azure Redis服务遇上(104, 'Connection reset by peer')
【Azure Cache for Redis】Python Django-Redis连接Azure Redis服务遇上(104, 'Connection reset by peer')
【Azure Cache for Redis】Python Django-Redis连接Azure Redis服务遇上(104, 'Connection reset by peer')
|
5月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
389 45
|
7月前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
238 22
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
5月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
179 2
|
5月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
96 1
|
6月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
96 4
|
7月前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
315 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
7月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
234 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
7月前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
249 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发