Django的安装以及基础使用

环境:windows 8.1+django1.6.6+python2.7.8+MySQL5.5.20+Pycharm4.0


MTV和MVC模式:

        Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:

层次职责
模型(Model),即数据存取层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),即表现层
处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
视图(View),即业务逻辑层存取模型及调取恰当模板的相关逻辑。模型与模板之间的桥梁。

       从以上表述可以看出Django 视图不处理用户输入,而仅仅决定要展现哪些数据给用户,而Django 模板 仅仅决定如何展现Django视图指定的数据。或者说, Django将MVC中的视图进一步分解为 Django视图 和 Django模板两个部分,分别决定 “展现哪些数据” 和 “如何展现”,使得Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板。
       至于MVC控制器部分,由Django框架的URLconf来实现。URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。URLconf对于URL的规则没有任何限制,你完全可以设计成任意的URL风格,不管是传统的,RESTful的,或者是另类的。框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作.在写程序的时候,只要调用相应的方法就行了,感觉很方便。程序员把控制层东西交给Django自动完成了。 只需要编写非常少的代码完成很多的事情.所以。它比MVC框架考虑的问题要深一步.因为我们程序员大都写程序在控制层。现在这个工作交给了框架,仅需写很少的调用代码,大大提高了工作效率。
        以上引自百度百科

个人总结一下:
  1. MVC模式:Model View Controller    模型 视图 控制器
  2. MTV模式:Model Template View   模型 模板 视图
  3. Django基于MVC,实际上为MTV。
  4. 将用户输入交于URLconf(urls.py)处理
  5. 把数据库操作封装成方法,在视图文件(views.py)中调用,


  1. Django的安装:
    linux下,需要先安装pip,切需要使用root执行下列操作,否则会出错。windows去 www.djangoproject.org  下载安装。

    >>pip install django ==1.7.
    
  2. Django安装好后,查看Django版本.
    >>import django
    >>django.VERSION
  3. 新建django项目。在当前路径下创建名为project_name的项目
    django-admin.py startproject [project_name]
    #例如
    django-admin.py startproject mysite
  4. 初始项目目录下有一个与 项目名称同名 的子目录以及 manage.py文件,此为django自带的开发服务器。
    在子目录下,有四个.py文件。
  5. 配置settings.py文件,修改语言,时区和加入app。

    LANGUAGE_CODE="zh-cn"
    TIME_ZONE=“Asia/Shanghai”
    INSTALLED_APPS末尾加入'blog',为后面创建app做准备

  6. 创建app。在manage.py同级目录下。
    django-admin.py startapp [app_name]
    #例如
    django-admin.py startapp blog
    
  7. 修改mysite目录下urls.py,将访问的url映射到视图文件中.
    #!-*-coding:utf8-*-
    from django.conf.urls import patterns, include, url
    from django.contrib import admin
    admin.autodiscover()
    urlpatterns = patterns('blog.views',
        # Examples:
        # url(r'^$', 'mysite.views.home', name='home'),
        # url(r'^blog/', include('blog.urls')),
    
        #url(r'^admin/', include(admin.site.urls)),
        #以下显示了三种url向视图方法传参的方法。而patterns第一个参数则提取了公共的视图前缀。
        #url(r'^blog/index/$','index',{'id':22}),#额外参数
        url(r'^blog/index/(?P<id>\d{3})/$','index'),#关键字参数,利用正则
        #url(r'^blog/index/index2/(\d{4})/$','index'),#位置参数
    )
    
  8. 在相应的app的views.py文件内添加视图方法。方法名需保持和urls.py中映射的视图方法名一致(index).
    视图方法连接了用户访问的url和模板文件(html).
    三种方法:
    一:
    创建模板对象;创建数据对象;渲染模板
    from django.template import Context,Template
    t = Template("<h1>{{ name }}</h1>")
    c = Context({"name":"Jack"})
    print t.render(c)
    
    二:
    创建使用templates目录下的html文件,在html中加入变量{{name}}。使用render_to_response
    from django.shortcuts import render_to_response
    def index(request):
        retrun render_to_response("index.html",({"name":"Jack"}))
    
    三:
    使用render。把二中的render_to_response简化成了render。其他不变。但在pycharm4.0中发现使用render不行,所哟继续使用render_to_response
    import django.shortcuts import render
  9. 创建模板目录和html文件
    在相应的app下创建templates目录,然后创建html文件,文件名需要和视图方法中一致(index.html)
    {{ name }},双层大括号代表变量,变量名需与视图方法中参数的key一致(name)
    <!DOCTYPE html>
    <html>
    <head>
         <title>Mysite</title>        
    </head>
    <body>
         <h1>{{ name }} </h1>
    </body>
    </html>
    
  10. 通过urls.py中映射的url访问
    http://127.0.0.1:8000/blog/index/222
  • 视图方法中,渲染的字典数据值可以为对象,列表,或者新建类的实例

    from django.shortcuts import render_to_response
    class Person(object):
          def __init__(self,name,age,sex):
              self.name = name
              self.age = age
              self.sex = sex 
          def say(self):
              return "My name is %s" % self.name
    
    def index(request):
        booklist = ["Python","Django","Ruby","Perl"]
        user = Person("Jack",18,"female")
        return render_to_response("index.html",({'title':'MyBlog','booklist':booklist,'user':user,'id':1}))
    

    然后在相应的模板文件(index.html)中通过调用属性方法的形式使用

    <!DOCTYPE HTML>
    <html>
    <head>
         <title>{{ title }}</title>
    </head>
    <body>
         <div>
             <ul>
                <li>{{ booklist[0] }}</li>
                <li>{{ booklist[1] }}</li>
                <li>{{ booklist[2] }}</li>
             </ul>
         </div>
         <div>
             <p>{{ user.name }}</p>
             <p>{{ user.say }}</p>
         </div>
         <h1>{{ id }}</h1>
    </body>
    </html>
  • urls.py文件中url映射视图的四种方式

    (1)写出完整的视图方法地址字符串
    urlpatterns = pattern('',
        url(r'^blog/index/$','blog.views.index'),
        )
    

    (2)导入视图函数
    from blog.views import index
    urlpatterns = pattern('',
        url(r'^blog/index/$','index'),
        )
    

    (3)导入模块名
    from blog import views
    urlpatterns = pattern('',
        url(r'^blog/index/$','views.index'),
        )
    

    (4)提取公共前缀
    urlpatterns = pattern('blog.views',
        url(r'^blog/index/$','index'),
        url(r'^blog/index2/$','index2'),
        )
  • 追加url配置,一般直接在pattern方法的最后处添加。现在可以以urlpattern+ =pattern()的方式添加。可以使各个app视图模块更加清晰。
    urlpatterns = pattern('blog.views',
        url(r'^blog/index/$','index'),
        url(r'^blog/index2/$','index2'),
        )
    urlpatterns+ =pattern('blog2.views',
        url(r'blog2/index/$','index'),
        )
    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值