一、初识 Django
一、引子
Django最初设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发!
从好的方面来看,Web 开发激动人心且富于创造性;从另一面来看,它却是份繁琐而令人生厌的工作。通过减少重复的代码,Django 使你能够专注于 web 应用上有 趣的关键性的东西。为了达到这个目标,Django 提供了通用Web开发模式的高度抽象,提供了频繁进行的编程作业的快速解决方法,以及为“如何解决问题”提供了清晰明了的约定。同时,Django 尝试留下一些方法,来让你根据需要在framework之外来开发。
二、设计模型
Django无需数据库就可以使用,它提供了对象关系映射起(ORM)。通过此技术,你可以使用Python代码来描述数据库结构。
数据模型语法提供了很多方法来描述你的数据,这解决了多年来数据库模式中的难题。以下是一个简明的例子:
# mysite/news/models.py
from django.db import models
class Reporter(models.Model):
full_name = models.CharField(max_length=70)
def __str__(self): # Python 2 下请使用 __unicode__
return self.full_name
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter)
def __str__(self): # Python 2 下请使用 __unicode__
return self.headline
二、创建模型
运行Django命令行工具来创建数据库表。
$ python manage.py migrate
migrate命令会查找所有可用的模型,如果数据库中没有与之对应的表,则会为其自动创建。Django提供了其他更丰富的方式。
三、享用便捷的API
现在可用使用一套便捷而丰富的Python API用语访问你的数据。这些API是自动即创建的,你不用编写其他任何代码。
# 从我们的 news 应用里导入模型(译注:记者和文章模型)。
>>> from news.models import Reporter, Article
# 现在系统中还没有记者。
>>> Reporter.objects.all()
<QuerySet []>
# 创建一个 Reporter 对象。
>>> r = Reporter(full_name='John Smith')
# 将对象保存到数据库。save()方法需要被显式调用。
>>> r.save()
# 现在它有了id。
>>> r.id
1
# 现在这个新人记者已经在数据库里了。
>>> Reporter.objects.all()
<QuerySet [<Reporter: John Smith>]>
# 字段被表示成 Python 对象中的属性。
>>> r.full_name
'John Smith'
# Django 提供了一套丰富的数据库查找 API。
>>> Reporter.objects.get(id=1)
<Reporter: John Smith>
>>> Reporter.objects.get(full_name__startswith='John')
<Reporter: John Smith>
>>> Reporter.objects.get(full_name__contains='mith')
<Reporter: John Smith>
>>> Reporter.objects.get(id=2)
Traceback (most recent call last):
...
DoesNotExist: Reporter matching query does not exist.
# 创建一篇文章。(译注:reporter放入了前面创建的r对象)
>>> from datetime import date
>>> a = Article(pub_date=date.today(), headline='Django is cool',
... content='Yeah.', reporter=r)
>>> a.save()
# 现在文章在数据库里了。
>>> Article.objects.all()
<QuerySet [<Article: Django is cool>]>
# 通过 Article 对象可以访问与其关联的 Reporter 对象。
>>> r = a.reporter
>>> r.full_name
'John Smith'
# 反之亦然:Reporter 对象也可以访问到与其关联的 Article 对象。
>>> r.article_set.all()
<QuerySet [<Article: Django is cool>]>
# 这个 API 接受你所需的查询条件,并在后台高效地执行 JOIN 数据库操作。
# 这个操作会查找所有以 "John" 开头的记者发表的文章。
>>> Article.objects.filter(reporter__full_name__startswith='John')
<QuerySet [<Article: Django is cool>]>
# 通过变更对象的属性值来修改对象,然后调用save()存入数据库。
>>> r.full_name = 'Billy Goat'
>>> r.save()
# 用 delete() 来删除一个对象。
>>> r.delete()
四、动态生成的管理页面:并非徒有其表
当你的模型完成定义,Django就会自动生成一个专业的生产级的管理页面,一个可用让已认证用户进行添加,更改和删除对象的Web站点,那你只需要简单的在admin站点注册你的模型即可。
# mysite/news/models.py
from django.db import models
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
# mysite/news/admin.py
from django.contrib import admin
from . import models
admin.site.register(models.Article)
这样设计所遵循的理念是,站点编辑人员可以是你的员工,你的客户,或者就是你自己--而你大概不会乐意费半天劲创建一个只有内容管理工具的后台管理界面。
创建Django应用的典型流程是:先建立数据模型,然女孩搭建管理站点,尽可能快的跑起来。那样你的团队(或者客户)就可以向你的网站里填充数据了。
一、初识 Django的更多相关文章
- python的Web框架:初识Django
web应用程序 本质 socket服务端 浏览器本质是一个socket客户端 1. 服务器程序 socket请求 接受HTTP请求,发送HTTP响应. 比较底层,繁琐,有专用的服务器软件,如:Apac ...
- 初识Django —Python API接口编程入门
初识Django —Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言, ...
- web框架之初识Django
目录 一.web框架 1.1什么是web框架 1.2自制的简易web框架 1.3三大主流web框架简介 Django Flask Tornado 1.4动态网页与静态网页 二.初识Django框架 2 ...
- Django学习手册 - 初识django
初识: django简介: 开放源代码的web应用框架 由python语言编写的. 一.框架基本概念(核心): 以上这个图就是 django 的核心逻辑图,必须熟记.后续的所有编程都跟这个图的逻辑息息 ...
- 巨蟒python全栈开发django2:初识django
今日内容大纲: 1.起飞版web框架 2.自定制框架的流程 3.jinja2模板渲染初识 4.MVC&&MTV 5.django版本介绍及django安装 6.django初识(一些操 ...
- 初识Django之前端后端与数据库的配置
目录 一.静态文件配置 二.关于form表单的补充 三.post请求出现403问题 四.request方法初识 4.1判断当前请求方式 4.2request.POST与request.GET 五.py ...
- 初识django
一 从下面开始 所有的的web应用其实就是就是一个socket服务器,浏览器是一个web客户端. import socket def handle_request(client): buf = cli ...
- python——初识django的template
这周听了老师讲关于django的框架问题,第一次比较透彻的了解了mtv框架.也是第一次接触模板的概念,研究了一下,现在就记录下来好嘞... 首先要介绍一点关于django的模板:我们为什么要使用模板呢 ...
- 初识DJango——MTV模型
一.Django—MTV模型 Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模版):负责如何把页面展示给用户 View(视图):负责业务逻 ...
- 初识DJango——Web框架
一.Web框架 HTTP特点 1.简单快速:客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有GET.HEAD.POST.每种方法规定了客户与服务器联系的类型不同. 由于HTTP协议简单 ...
随机推荐
- git用户限制ssh登录服务器
服务器额外的防范措施: 搭建git服务器后通常会建立一个git账户,其它人共用这个账户来克隆或推送数据到git仓库中,通常也只需要这个功能,但是如果不加限制,那么其它人可以通过这个git账户登录到主机 ...
- ant design 修改tab样式
.ant-tabs-ink-bar{ background-color: transparent !important; } .ant-tabs-top .ant-tabs-ink-bar-anima ...
- disconf实践(四)基于注解的分布式配置文件管理,自动reload
上一篇讲解了基于xml的自动reload的分布式配置文件管理,这一篇讲解基于注解的自动reload的方式(基于disconf实践二). 1. 修改spring配置文件 <?xml version ...
- 《AngularJS即学即用》读书笔记(一)
最近在学习angularJS,就买了一本<AngularJS即学即用>作为自己的入门书籍,到目前为止看了两章的内容,感觉这本书还是不错的,东西讲的浅显易懂.之所以写这篇文章,一是督促自己能 ...
- Runtime - ② - NSObject类
首先,我们都知道NSObject是大多数类的根类,但是,这个类的是怎么实现的呢?我们可以去下载开源的Runtime源码,探究下NSObject类的实现. 1. NSObject.h文件 我们可以直接使 ...
- SQL语句group by 与order by 执行顺序引发的一场“内斗”
直入主题!看看下面这SQL会不会报错?如果报错应该是什么错误! --说明:黑色字体都是列SELECT application_id, index_num, num, amount FROM `cred ...
- 使用VMware安装CentOS7
以前一直用的CentOS6,这次搭建一套CentOS7. 感觉和6还是有一些差异,在这边记录下. 一.选择典型(推荐): 二.选择安装程序光盘映像文件: 网上有几个版本,mini版,DVD版,不过mi ...
- querySelectorAll 和 getElementBy 方法的区别
作者:简生 链接:https://www.zhihu.com/question/24702250/answer/28695133 来源:知乎 1. W3C 标准 querySelectorAll 属于 ...
- 基于 HTML5 WebGL 的 3D 风机 Web 组态工业互联网应用
基于 HTML5 WebGL 的 3D 风机 Web 组态工业互联网应用 前言 在目前大数据时代背景之下,数据可视化的需求也变得越来越庞大,在数据可视化的背景之下,通过智能机器间的链接并最终将人机链接 ...
- stm32串口通信实验,一点笔记
第一次深入学习stm32,花了好长时间才看懂代码(主要是C语言学习不够深入),又花了段时间自己敲了一遍,然后比对教程,了解了利用中断来串口通信的设置方法. 板子是探索版f407,本实验工程把正点原子库 ...