web前端学习笔记(二)---Django
【前言】前面(一)学习了web的基础知识,介绍到了MVC,项目使用一个Django框架。
Django book:https://code.ziqiangxuetang.com/django/django-tutorial.html
1. web框架介绍
具体介绍Django之前,必须先介绍WEB框架等概念。web框架: 别人已经设定好的一个web网站模板,你学习它的规则,然后“填空”或“修改”成你自己需要的样子。
一般web框架的架构是这样的:

其它基于python的web框架,如tornado、flask、webpy都是在这个范围内进行增删裁剪的。例如tornado用的是自己的异步非阻塞“wsgi”,flask则只提供了最精简和基本的框架。Django则是直接使用了WSGI,并实现了大部分功能。
二、MVC概念到MTV的变化
仔细看,有助于理解django的项目框架:https://www.cnblogs.com/YeChing/p/6339969.html
[root@localhost helloworld]# tree
.
├── db.sqlite3 #django自带的数据库,python也自带操作函数
├── helloworld
│ ├── __init__.py #包
│ ├── __init__.pyc
│ ├── search2.py
│ ├── search2.pyc
│ ├── search.py #http通信的表单提交。get post
│ ├── search.pyc
│ ├── settings.py #此Diango项目的设置/配置文件,包括模板路径,数据库连接
│ ├── settings.pyc
│ ├── testdb.py #创建的数据库对象,增删改查
│ ├── testdb.pyc
│ ├── urls.py #项目的URL声明,由此django驱动的网站的目录
│ ├── urls.pyc
│ ├── view.py #在此的view向templates提交数据
│ ├── view.pyc
│ ├── wsgi.py # WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
│ └── wsgi.pyc
├── manage.py #命令行工具,可让我们以各种方式与该 Django 项目进行交互
├── templates #视图文件建立在这里,接收数据来视图输出。需要在settings.py中修改
│ ├── base.html #TEMPLATES 中的 DIRS 为 [BASE_DIR+"/templates",]
│ ├── hello.html
│ ├── post.html #这些模板可通过{% extends "base.html" %}继承base.html
│ └── search_form.html
└── TestModel #使用模型,需要创建app
├── admin.py
├── admin.pyc
├── apps.py
├── __init__.py
├── __init__.pyc
├── migrations
│ ├── 0001_initial.py
│ ├── 0001_initial.pyc
│ ├── __init__.py
│ └── __init__.pyc
├── models.py #类名相当于数据库表名
├── models.pyc
├── tests.py
└── views.py
三、django的特点
1、开启服务器之后,修改代码后只要保存,刷新一下前端就能立刻生效,无需重新启动。所以,对于我不擅长的html语言,可以频繁修改看现象。
2、表名组成结构为:应用名_类名(如:TestModel_test)。
#1、
django-admin startapp TestModel # 2、models.py。类名就是表名,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。
from django.db import models class Test(models.Model):
name = models.CharField(max_length=20)
#3、
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'TestModel', # 添加此项
)
#4、在数据库中创建表
$ python manage.py migrate # 创建表结构
$ python manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更
$ python manage.py migrate TestModel # 创建表结构 #5、创建的表名:应用名_表名
Creating tables ...
……
Creating table TestModel_test #我们自定义的表
……
3、ORM操作
Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句;所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite....,如果数据库迁移,只需要更换Django的数据库引擎即可;
Djan提供了很多字段类型,比如URL/Email/IP/ 但是mysql数据没有这些类型,这类型存储到数据库上本质是字符串数据类型,其主要目的是为了封装底层SQL语句;
例如:字符串类(以下都是在数据库中本质都是字符串数据类型,此类字段只是在Django自带的admin中生效)
name=models.CharField(max_length=32) #models.CharField 对应的是MySQL的varchar数据类型
EmailField(CharField):
IPAddressField(Field)
URLField(CharField)
SlugField(CharField)
更详细参考:https://www.cnblogs.com/sss4/p/7070942.html
四、实现浏览器--Django--MySQL的信息实战
https://www.cnblogs.com/feixuelove1009/p/5823135.html
五、各种操作
1、Django中models对数据库的操作。models的各种操作:https://www.cnblogs.com/yangmv/p/5327477.html
2、通过前端“按钮”,对数据库进行增删改查:https://blog.csdn.net/Panda_Murong/article/details/78894388
3、ORM获取数据的三种方式:https://www.cnblogs.com/littlesky1124/p/9157464.html
web前端学习笔记(二)---Django的更多相关文章
- web前端学习笔记
web前端学习笔记(CSS盒子的定位) 相对定位 使用相对定位的盒子的位置常以标准流的排版方式为基础,然后使盒子相对于它在原本的标准位置偏移指定的距离.相对定位的盒子仍在标准流中,它后面的盒子仍以标准 ...
- 【前端】Web前端学习笔记【2】
[2016.02.22至今]的学习笔记. 相关博客: Web前端学习笔记[1] 1. this在 JavaScript 中主要有以下五种使用场景 在全局函数调用中,this 绑定全局对象,浏览器环境全 ...
- 【前端】Web前端学习笔记【1】
... [2015.12.02-2016.02.22]期间的学习笔记. 相关博客: Web前端学习笔记[2] 1. JS中的: (1)continue 语句 (带有或不带标签引用)只能用在循环中. ( ...
- Web前端学习笔记(001)
....编号 ........类别 ............条目 ................明细....................时间 一.Web前端学习笔记 ...
- web前端学习(二)html学习笔记部分(11)-- 没有标号记录的知识合集
这一部分内容相对比较简单,就不按规矩排序了.(主要是网站上也没有这一部分内容的排序) 1. html5的 非主体结构元素 学习笔记(1)里面记录过. 2. html5表单提交和PHP环境搭建 1. ...
- web前端学习笔记:文本属性
今天的web前端笔记主要讲述文本属性,希望能帮助到正在学习web前端开发的初学者们,废话不多说了,一起来看看文本属性的相关内容吧. 文本属性 文本缩进 将Web页面上的一个段落第一行缩进,这是一种最常 ...
- web前端学习(二)html学习笔记部分(10)-- HTML5构建应用布局和页面
1.2.25 HTML5构建应用布局和页面 1.2.25.1 HTML5在移动开发中的准则 1.尽量使用单页面开发 2.慎重选择前端UI框架 3.动画.特效使用准则(60fps) 浏览器消耗最小的 ...
- web前端学习(二)html学习笔记部分(1) -- html5新增的元素及特性等等
检查,在浏览器中可以调整设备类型 html5实现水池效果. lang:en为英文语言,中文语言zh <html lang="en"> <head> < ...
- web前端学习(二)html学习笔记部分(9)-- 响应式布局
1.2.23 响应式布局基础 1.2.23.1 响应式布局介绍 1.响应式布局是2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多终端 -- 而不是为每个终端做一个特定的版本.这个概 ...
随机推荐
- poj 3278 Catch That Cow(记忆化广度优先搜索)
题意: 0到N的数轴上,每次可以选择移动到x-1,x+1,2*x,问从n移动到k的最少步数. 思路: 同时遍历三种可能并记忆化入队即可. Tips: n大于等于k时最短步数为n-k. 在移动的过程中可 ...
- NCD 2019 M. NCD Salary
题意 :给你两个指数类型的数\(A^m\)和\(B^n\),比较他们的大小.保证底数和指数中最多只有一个为0. 题解 :题目数据非常大,肯定不能直接比较.由换底公式和\(Log\)函数的性质我们知道: ...
- C# 同步和异步(概念理解)
C# 同步和异步 IO 概念区分 四个相关概念: 同步(Synchronous) 异步( Asynchronous) 阻塞( Blocking ) 非阻塞( Nonblocking) 同步异步图解 ...
- Ubuntu 下更改pip源使用清华源
一.新建目录 sudo -s mkdisk ~./pip vim ~./pip/pip.conf 二.复制下面代码,并保存 [global] index-url = https://pypi.tuna ...
- Leetcode(215)-数组中的第K个最大元素
在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 ...
- codeforces 5C
C. Longest Regular Bracket Sequence time limit per test 2 seconds memory limit per test 256 megabyte ...
- 可重入锁ReentrantLock解析
说到可重入锁,先从AQS的ConditionObject说起,AQS的内部类ConditionObject是构建显示锁条件队列的基础.之前AQS的解析没有说这个内部类,这里和ReentrantLock ...
- 深入 Python 解释器源码,我终于搞明白了字符串驻留的原理!
英文:https://arpitbhayani.me/blogs/string-interning 作者:arpit 译者:豌豆花下猫("Python猫"公众号作者) 声明:本翻译 ...
- Dyno-queues 分布式延迟队列 之 基本功能
Dyno-queues 分布式延迟队列 之 基本功能 目录 Dyno-queues 分布式延迟队列 之 基本功能 0x00 摘要 0x01 Dyno-queues分布式延迟队列 1.1 设计目标 1. ...
- 2021-2-18:请你说说MySQL的字符集与排序规则对开发有哪些影响?
任何计算机存储数据,都需要字符集,因为计算机存储的数据其实都是二进制编码,将一个个字符,映射到对应的二进制编码的这个映射就是字符编码(字符集).这些字符如何排序呢?决定字符排序的规则就是排序规则. 查 ...