django入门教程

概述

历史

许多年前,劳伦斯出版集团需要开发一个以新闻内容为主的网站。
众所周知,对于新闻网站来说,需求变化很快,互动性也很高。
于是,world online的三位工程师使用python开发了Django。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
Django:--完美主义者快速开发之选

设计哲学

Django的主要目的是简便、快速地开发数据库驱动的网站——动态网站。
Django强调代码复用,多个组件可以方便地以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件。
Django强调快速开发
基于MVC(更确切的说是MTV)

安装

安装python
Pip install django
或者
Easy_install django


Django应用

Google appEngine
豆瓣部分使用django
爱调研http://www.idiaoyan.com
海报网www.haibao.cn63万PV
http://www.djangosites.org/列举更多国外知名网站

IDE

Eclipse
插件功能强大,耗内存
Vim
可使用pysmell插件
idle
带有提示功能,文件少时候比较好用
Geany
提示功能再强化一点就完美了
PyCharm
收费

入门示例

WEB系统需解决

 Web请求与web后端处理的映射;
 动态数据的展示;
 请求的验证(客户端+服务器端);
 数据的处理;
 数据的持久化;
Django提供urls模块处理映射、template模板用于数据展示、form模块用于服务器端验证+客户端结果展示、Django-ORM框架用于持久化。


开发图书库存系统

1.创建项目

django-admin startproject bookstore

2.创建模块

cd bookstore
python manage.py startapp books

3 写model

from django.db import models
class Publisher(models.Model):
name = models.CharField(max_length=200)
addr = models.CharField(max_length=200)
class Book(models.Model):
name = models.CharField(max_length=200)
author = models.CharField(max_length=200)
publisher = models.ForeignKey(Publisher)

4增加books模块

setting.py里增加:
INSTALLED_APPS += ('books',)

5设置数据库

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 
'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'bookstore.db',                      # Or path to 
database file if using sqlite3....}}

6 启用admin模块

setting.py里增加:
INSTALLED_APPS += ('django.contrib.admin',)
urls.py里增加:
from django.contrib import admin
admin.autodiscover()
url(r'^admin/', include(admin.site.urls)),

7 给admin模块注册model

vim books/admin.py添加:
from django.contrib import admin
from books.models import Book,Publisher
admin.site.register(Book)
admin.site.register(Publisher)

8 初始化数据库

python manage.py syncdb

这里会提示创建一个admin用户,输入密码,一会儿可以用于登录

9 启动server 

python manage.py  runserver

10 试试成果

登录http://127.0.0.1:8000/admin/

原理介绍

mvc模型


MVC把web分为数据模型,控制器和视图三层,可以使业务逻辑与数据表现分开;



Django是MTV分层

Django遵循了MVC(model-view-controller)这个分层方式,但是确切的说是MTV分层。
Mmodel,数据模型
Ttemplate,模板
Vview,视图

Model层

1、使用的是ORM
2、我们所能控制的就是models.py文件
3、负责数据库管理


models.py文件,一个类对应数据库的一张表

class Publisher(models.Model):
name = models.CharField(max_length=200)
addr = models.CharField(max_length=200)
def __unicode__(self):
return self.name
class Book(models.Model):
name = models.CharField(max_length=200)
author = models.CharField(max_length=200)
publisher = models.ForeignKey(Publisher)
def __unicode__(self):
return self.name


Template层

1、负责怎么样显示数据
2、说白了,就是利用一些格式化的html文件,使数据按照要求显示(显示在哪里,怎么显示等等)
3、需要在工程目录下,建立templates文件夹,然后在setting.py中设置好templates目录的路径。然后在此目录中建立所需html文件。

Template示例,index.html

{% if book_list %}
<ul>
{% for book in book_list %}
<li><a href="/book/{{ book.id }}/">{{ book.name 
}}</a> {{ book.author }} {{ book.publisher }}</li>
{% endfor %}
</ul>
{% else %}
<p>No books are available.</p>
{% endif %}


View层

1、django中的view层是用于控制要显示什么数据
2、我们能看到的就是views.py文件


文件是views.py,既然是要控制显示的数据,那么要显示之前的book数据呢?

def index(request):
book_list = Book.objects.all()
return 
render_to_response('books/index.html',{'book_l
ist': book_list})

最后就差URLconf把模型,模板和视图串联起
来了。
在urls.py文件中:

urlpatterns = patterns('',
url(r'^index$', 'books.views.index'),
url(r'^admin/', include(admin.site.urls)),
)

运转过程

在浏览器中输入127.0.0.1:8000/indexDjango会根据urls.py文件找到bookstore文件夹下books目录中的views.py文件中index函数,
然后根据model.py文件找到数据库中Book表中数据,并输出到index.html文件中,最后浏览器渲染出我们所需的网页。



Django的过程

Web服务器收到一个http请求Django把web服务器传过来的请求转换成一个请求对象
Django在URLconf里查找正确的视图函数调用这个视图函数,参数为请求对象以及任何捕捉到的URL参数然后视图会创建并返回一个响应对象
Django将这个响应对象转换成web服务器可以理解的格式
Web服务器将响应发送给客户端


参考资料:

官方文档:
https://docs.djangoproject.com/en/1.5/
中文版:
http://django-document-cn.readthedocs.org/en/latest/index.html
http://djangobook.py3k.cn/2.0/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

day walker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值