一、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
<code>方式1:通过yum的方式安装pip</code>
<code># rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm</code>
<code># sed -i 's/^#//' /etc/yum.repos.d/epel.repo</code>
<code># sed -i 's/mirrorlist/#mirrorlist/' /etc/yum.repos.d/epel.repo</code>
<code># yum -y install python-pip</code>
<code>方式2:通过源码编译安装pip</code>
<code># wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz</code>
<code># tar xf setuptools-1.4.2.tar.gz </code>
<code># cd setuptools-1.4.2</code>
<code># python setup.py install </code>
<code># easy_install --version</code>
<code># cd ../</code>
<code># wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-1.4.1.tar.gz</code>
<code># tar xf pip-1.4.1.tar.gz </code>
<code># cd pip-1.4.1</code>
<code># python setup.py install</code>
(3)pip的基本使用
<code>安装特定版本的package,通过使用==, >=, <=, >, <来指定一个版本号。</code>
<code>pip安装django,并指定安装的版本</code>
<code># pip install 'django==1.6.5'</code>
<code>pip卸载django</code>
<code># pip uninstall django</code>
<code>pip查询包</code>
<code># pip search 'django'</code>
<code>pip升级包</code>
<code># pip install -U 'django'</code>
<code>列出pip安装的包</code>
<code># pip freeze</code>
三、安装Django
在linux环境下,安装Django有两种方式
(1)通过pip工具安装django
(2)通过源码编译安装django
<code># tar xf Django-1.6.10.tar.gz </code>
<code># cd Django-1.6.10</code>
(3)导入django模块并查看版本号,如果没有错误输出,说明django安装是成功的
<code>[root@localhost ~]</code><code># python -c 'import django;print (django.get_version())'</code>
<code>1.6.10</code>
四、Django创建项目和应用
(1)创建一个项目
<code>[root@localhost ~]</code><code># django-admin.py startproject webproject</code>
<code>[root@localhost ~]</code><code># tree ./</code>
<code>./</code>
<code>└── webproject </code><code>#外层目录只是你项目的一个容器,可以任意重命名</code>
<code> </code><code>├── manage.py </code><code>#一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互</code>
<code> </code><code>└── webproject </code><code>#目录是你项目中的实际 Python 包。该目录名就是 Python 包名,通过它你可以导入它里面的任何东西</code>
<code> </code><code>├── __init__.py </code><code>#一个空文件,告诉 Python 该目录是一个 Python 包</code>
<code> </code><code>├── settings.py </code><code>#该 Django 项目的设置/配置 </code>
<code> </code><code>├── urls.py </code><code>#该 Django 项目的 URL 声明; 一份由 Django 驱动的网站“目录” </code>
<code> </code><code>└── wsgi.py </code><code>#一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目</code>
<code>2 directories, 5 files</code>
(2)创建应用程序
<code>[root@localhost ~]</code><code># cd webproject/</code>
<code>[root@localhost webproject]</code><code># django-admin.py startapp blog</code>
<code>[root@localhost webproject]</code><code># tree .</code>
<code>.</code>
<code>├── blog</code>
<code>│ ├── admin.py</code>
<code>│ ├── __init__.py</code>
<code>│ ├── models.py</code>
<code>│ ├── tests.py</code>
<code>│ └── views.py</code>
<code>├── manage.py</code>
<code>└── webproject</code>
<code> </code><code>├── __init__.py</code>
<code> </code><code>├── settings.py</code>
<code> </code><code>├── urls.py</code>
<code> </code><code>└── wsgi.py</code>
(3)修改django配置文件
<code>#需要修改三处位置</code>
<code>[root@localhost ~]</code><code># vim webproject/settings.py</code>
<code>INSTALLED_APPS = (</code>
<code> </code><code>'django.contrib.admin'</code><code>,</code>
<code> </code><code>'django.contrib.auth'</code><code>,</code>
<code> </code><code>'django.contrib.contenttypes'</code><code>,</code>
<code> </code><code>'django.contrib.sessions'</code><code>,</code>
<code> </code><code>'django.contrib.messages'</code><code>,</code>
<code> </code><code>'django.contrib.staticfiles'</code><code>,</code>
<code> </code><code>'blog'</code><code>, </code><code>#第一处添加blog应用</code>
<code>)</code>
<code>LANGUAGE_CODE = </code><code>'zh-cn'</code> <code>#第二处修改为中文</code>
<code>TIME_ZONE = </code><code>'Asia/Shanghai'</code> <code>#第三处修改时区</code>
(4)配置url访问路径
<code>[root@localhost ~]</code><code># vim webproject/urls.py</code>
<code>urlpatterns = patterns(</code><code>''</code><code>,</code>
<code> </code><code># Examples:</code>
<code> </code><code># url(r'^$', 'webproject.views.home', name='home'),</code>
<code> </code><code># url(r'^blog/', include('blog.urls')),</code>
<code> </code><code>url(r</code><code>'^admin/'</code><code>, include(admin.site.urls)),</code>
<code> </code><code>url(r</code><code>'^blog$'</code><code>,</code><code>'blog.views.index'</code><code>), </code><code>#添加一行</code>
<code> </code><code>#正则匹配,仅访问到^blog目录就重定向到blog.views中的index方法,所以在views.py里面应该定义好index函数/方法</code>
(5)创建视图
<code>[root@localhost webproject]</code><code># vim blog/views.py</code>
<code>from django.shortcuts </code><code>import</code> <code>render</code>
<code>from django.http </code><code>import</code> <code>HttpResponse</code>
<code># Create your views here.</code>
<code>def index(req):</code>
<code> </code><code>return</code> <code>HttpResponse(</code><code>'<h1>hello django!!!</h>'</code><code>)</code>
(6)运行django服务
<code>[root@localhost webproject]</code><code># python manage.py runserver 0.0.0.0:80</code>
<code>Validating models...</code>
<code>0 errors found</code>
<code>February 11, 2015 - 11:58:44</code>
<code>Django version 1.6.10, using settings </code><code>'webproject.settings'</code>
<code>Starting development server at http:</code><code>//0</code><code>.0.0.0:80/</code>
<code>Quit the server with CONTROL-C.</code>
<code>[11</code><code>/Feb/2015</code> <code>11:59:23] </code><code>"GET / HTTP/1.1"</code> <code>404 2003</code>
<code>[11</code><code>/Feb/2015</code> <code>11:59:28] </code><code>"GET /blo HTTP/1.1"</code> <code>404 2012</code>
<code>[11</code><code>/Feb/2015</code> <code>11:59:30] </code><code>"GET /blog HTTP/1.1"</code> <code>200 23</code>
五、浏览器访问
<a href="http://s3.51cto.com/wyfs02/M00/59/A9/wKiom1Ta17eR3THHAAD5nE1KEXk317.jpg" target="_blank"></a>
六、模板层(template)
上述是通过调用blog.views中的index方法,返回一个页面!!!
<code>from django.http </code><code>import</code> <code>HttpRespomse</code>
<code> </code><code>return</code> <code>HttpRespose(<h1>hello django!!!<</code><code>/h1</code><code>>)</code>
实际应用中这种方法显然不适合,那么接下来我们就聊聊HTML代码如何嵌套在Django中,有两种方式:
静态页面
方式一:
通过template加载模板,生成Context对象,存放模板所需数据,通过模板对象对数据进行渲染,然后通过HttpResponse输出。
模板文件放在应用程序下面templates目录,这个目录默认不存在需要手动创建
(1)首先查看当前所处的位置和整体项目的目录文件结构
18
19
20
21
22
23
24
25
26
<code>[root@localhost webproject]</code><code># pwd</code>
<code>/root/webproject</code>
<code>├── blog </code><code>#应用</code>
<code>│?? ├── admin.py</code>
<code>│?? ├── admin.pyc</code>
<code>│?? ├── __init__.py</code>
<code>│?? ├── __init__.pyc</code>
<code>│?? ├── models.py</code>
<code>│?? ├── models.pyc</code>
<code>│?? ├── tests.py</code>
<code>│?? ├── views.py</code>
<code>│?? └── views.pyc</code>
<code>└── webproject </code><code>#项目</code>
<code> </code><code>├── __init__.pyc</code>
<code> </code><code>├── settings.pyc</code>
<code> </code><code>├── urls.pyc</code>
<code> </code><code>├── wsgi.py</code>
<code> </code><code>└── wsgi.pyc</code>
<code>2 directories, 18 files</code>
(2)创建我们的第二个应用www
<code>[root@localhost webproject]</code><code># django-admin.py startapp www</code>
<code>[root@localhost webproject]</code><code># ls</code>
<code>blog manage.py webproject www</code>
(3)更新项目配置文件,发布新应用并设置url
<code>[root@localhost webproject]</code><code># vim webproject/settings.py</code>
<code> </code><code>'blog'</code><code>,</code>
<code> </code><code>'www'</code><code>, </code><code>#添加新行</code>
<code>[root@localhost webproject]</code><code># vim webproject/urls.py</code>
<code> </code><code>url(r</code><code>'^blog$'</code><code>,</code><code>'blog.views.index'</code><code>),</code>
<code> </code><code>url(r</code><code>'^www$'</code><code>,</code><code>'www.views.index'</code><code>), </code><code>#添加新行</code>
(4)创建模板目录并生成html文件
<code>[root@localhost webproject]</code><code># mkdir www/templates</code>
<code>[root@localhost webproject]</code><code># cat www/templates/index.html </code>
<code><!DOCTYPE html PUBLIC </code><code>"-//W3C//DTD XHTML 1.0 Transitional//EN"</code> <code>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</code><code>></code>
<code><html xmlns=</code><code>"http://www.allentuns.com/1999/xhtml"</code><code>></code>
<code><</code><code>head</code><code>></code>
<code><meta http-equiv=</code><code>"Content-Type"</code> <code>content=</code><code>"text/html; charset=utf-8"</code> <code>/></code>
<code><title>My Django Page<</code><code>/title</code><code>></code>
<code><</code><code>/head</code><code>></code>
<code><body></code>
<code> </code><code><h1>Hello Django!!!<</code><code>/h1</code><code>></code>
<code><</code><code>/body</code><code>></code>
<code><</code><code>/html</code><code>></code>
(5)修改应用的视图文件views
<code>[root@localhost webproject]</code><code># vim www/views.py </code>
<code>from django.template </code><code>import</code> <code>loader,Context </code><code>#导入django的两个对象loader和Context</code>
<code> </code><code>t = loader.get_template(</code><code>'index.html'</code><code>) </code><code>#导入模板文件www/templates/index.html</code>
<code> </code><code>c = Context({}) </code><code>#创建Context对象,用于存放提供给模板的数据(用于动态网页)</code>
<code> </code><code>return</code> <code>HttpResponse(t.render(c))</code>
(6)浏览器访问
<a href="http://s3.51cto.com/wyfs02/M02/59/AD/wKiom1TbEgSTf3FkAADYdYP4iXE356.jpg" target="_blank"></a>
方式二:修改方式一(只需修改第五步,其它一样)
<code>[root@localhost webproject]</code><code># cat www/views.py</code>
<code>from django.shortcuts </code><code>import</code> <code>render_to_response</code>
<code> </code><code>return</code> <code>render_to_response(</code><code>'index.html'</code><code>,{})</code>
<code></code>
本文转自zys467754239 51CTO博客,原文链接:http://blog.51cto.com/467754239/1613612,如需转载请自行联系原作者