您的位置:首页 > 编程语言 > Go语言

Django的安装以及基础使用

2014-12-22 23:20 369 查看
环境: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框架考虑的问题要深一步.因为我们程序员大都写程序在控制层。现在这个工作交给了框架,仅需写很少的调用代码,大大提高了工作效率。

       以上引自百度百科

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

Django的安装:

linux下,需要先安装pip,切需要使用root执行下列操作,否则会出错。windows去 www.djangoproject.org  下载安装。
>>pip install django ==1.7.

Django安装好后,查看Django版本.
>>import django
>>django.VERSION

新建django项目。在当前路径下创建名为project_name的项目
django-admin.py startproject [project_name]
#例如
django-admin.py startproject mysite

初始项目目录下有一个与 项目名称同名 的子目录以及 manage.py文件,此为django自带的开发服务器。

在子目录下,有四个.py文件。
配置settings.py文件,修改语言,时区和加入app。

LANGUAGE_CODE="zh-cn"

TIME_ZONE=“Asia/Shanghai”

INSTALLED_APPS末尾加入'blog',为后面创建app做准备

创建app。在manage.py同级目录下。
django-admin.py startapp [app_name]
#例如
django-admin.py startapp blog

修改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'),#位置参数
)

在相应的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

创建模板目录和html文件

在相应的app下创建templates目录,然后创建html文件,文件名需要和视图方法中一致(index.html)

{{ name }},双层大括号代表变量,变量名需与视图方法中参数的key一致(name)
<!DOCTYPE html>
<html>
<head>
<title>Mysite</title>
</head>
<body>
<h1>{{ name }} </h1>
</body>
</html>

通过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'),
)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django python