一、初识 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协议简单 ...
随机推荐
- 通讯协议(二)HTTPS协议
摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于“还原”过 ...
- Java中使用OpenSSL生成的RSA公私钥
RSA是什么:RSA公钥加密算法是1977年由Ron Rivest.Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的.RSA取名来自开发他们三者的名字.RSA是目前最有影响力的 ...
- C#中调用方法
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- linux内存管理--用户空间和内核空间
关于虚拟内存有三点需要注意: 4G的进程地址空间被人为的分为两个部分--用户空间与内核空间.用户空间从0到3G(0xc0000000),内核空间占据3G到4G.用户进程通常情况下只能访问用户空间的虚拟 ...
- PHP介绍(PHP入门1)
BS架构和CS架构 B:Browser:浏览器 S:Server:服务器 C:Client:客户端 BS 浏览器和服务器的关系,通过浏览器来访问服务器,比如:百度.新浪... 优点:只要有浏览器就能访 ...
- Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架
1.模型管理 :web在线流程设计器.预览流程xml.导出xml.部署流程 2.流程管理 :导入导出流程资源文件.查看流程图.根据流程实例反射出流程模型.激活挂起 3.运行中流程:查看流程信息.当前任 ...
- mac终端输入python默认打开python3
*** 1. 终端打开.bash_profile文件 ***open ~/.bash_profile *** 2. .bash_profile文件内容 ***# Setting PATH for Py ...
- Oracle与MySQL使用区别
与MySQL通过创建不同的数据库来存储表 Oracle提出表空间(tablespace)的概念作为逻辑上的存储区域来存储表, 而不同的表空间由不同的用户来管理 用户可以授予权限或角色 举例: 使用PL ...
- layDay日期格式不合法报错解决
报错内容如下: Uncaught TypeError: Cannot read property 'appendChild' of undefined 相关报错内容的行代码如下 即使日期格式拼接正确也 ...
- 有关MySQL数据库命令
phpstudy使用最终端打开数据库 : 第一次打开默认的密码是:root. 进入后对数据可以进行增删查改. show databases; 是查看数据库的指令 注意:分号是数据库的结束符,没有加分 ...