Python [4] Django的安装

发布时间:2019-09-13 09:26:30编辑:auto阅读(1475)

    一、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:通过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的基本使用

    安装特定版本的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

    # pip install 'django==1.6.5'

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

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

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

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


    四、Django创建项目和应用

    (1)创建一个项目

    [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)创建应用程序

    [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配置文件

    #需要修改三处位置
    [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访问路径

    [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)创建视图

    [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服务

    [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方法,返回一个页面!!!

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

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

    静态页面

    方式一:

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


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


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

    [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

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

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

    [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文件

    [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

    [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


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

    [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',{})


关键字