内容:

1.web预备知识

2.django介绍

3.web框架的本质及分类

4.django安装与基本设置

1.web预备知识

HTTP协议:https://www.cnblogs.com/wyb666/p/9383077.html

关于web的本质:http://www.cnblogs.com/wyb666/p/9034042.html

如何自定义web框架:http://www.cnblogs.com/wyb666/p/9038644.html

了解cookie和session:https://www.cnblogs.com/wyb666/p/9068853.html

2.django介绍

(1)django介绍

Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。在Python各种web框架中,Django的文档最完善、市场占有率最高、招聘职位最多!

(2)MVC和MTV

MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 controller(控制 器)。其中:

  • M——管理应用程序的状态(通常存储到数据库中),并约束改变状态的行为(或者叫做“业务规则”)
  • C——接受外部用户的操作,根据操作访问模型获取数据,并调用“视图”显示这些数据。控制器是将“模型”和“视图”隔离,并成为二者之间的联系纽带
  • V——负责把数据格式化后呈现给用户

Django也是一个MVC框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式:

  • M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等
  • T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示
  • V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁

(3)django的优缺点

优点:

  • 完美的文档,Django的成功很大一部分原因要归功于Django近乎完美的官方文档(包括Djangobook)
  • 全套的解决方案,Django象Rails一样,提供全套的解决方案(full-stackframework + batteries included),基本要什么有什么(比如:cache、session、feed、orm、geo、auth),而且全部Django自己造,开发网站应手的工具Django基本都给你做好
  • 强大的URL路由配置,Django让你可以设计出非常优雅的URL,在Django里基本可以跟丑陋的GET参数说拜拜
  • 自助管理后台,admin interface是Django里比较吸引眼球的一项contrib,让你几乎不用写一行代码就拥有一个完整的后台管理界面。

缺点(源自Django坚持自己造所有的轮子,整个系统相对封闭):

  • 系统紧耦合,如果你觉得Django内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的
  • Django自带的ORM远不如SQLAlchemy强大,除了在Django这一亩三分地,SQLAlchemy是Python事实上的ORM标准,其它框架都支持SQLAlchemy
  • Template功能比较弱,不能插入Python代码,要写复杂一点的逻辑需要另外用Python实现Tag或Filter
  • URL配置虽然强大,但全部要手写,这一点跟Rails的Conventionover configuration的理念完全相左,高手和初识Django的人配出来的URL会有很大差异

Django大包大揽,用它来快速开发一些Web运用是很不错的。如果你顺着Django的设计哲学来,你会觉得Django很好用,越用越爽;相反,你如果不能融入或接受Django的设计哲学,你用Django一定会很痛苦,趁早放弃的好

(4)django的组件

Django框架的核心包括:一个 面向对象的映射器,用作数据模型和关联性数据库间的媒介(ORM);一个基于正则表达式的URL分发器;一个视图系统,用于处理请求;以及一个模板系统

核心框架中还包括:

  • 一个轻量级的、独立的Web服务器,用于开发和测试
  • 一个表单序列化及验证系统,用于HTML表单和适于数据库存储的数据之间的转换
  • 一个缓存框架,并有几种缓存方式可供选择
  • 中间件支持,允许对请求处理的各个阶段进行干涉
  • 内置的分发系统允许应用程序中的组件采用预定义的信号进行相互间的通信
  • 一个序列化系统,能够生成或读取采用XML或JSON表示的Django模型实例
  • 一个用于扩展模板引擎的能力的系统

另外Django 包含了很多应用在它的"contrib"包中,这些包括:

  • 一个可扩展的认证系统
  • 动态站点管理页面
  • 一组产生 RSS 和 Atom 的工具
  • 一个灵活的评论系统
  • 产生Google 站点地图 (Google Sitemaps)的工具
  • 防止跨站请求伪造(cross-site request forgery)的工具
  • 一套支持轻量级标记语言(Textile和Markdown)的模板库
  • 一套协助创建地理信息系统(GIS)的基础框架

3.web框架的本质及分类

(1)web框架的本质:socket服务端 与 浏览器的通信

(2)socket服务端功能划分

  • 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn...
  • 根据用户访问不同的路径执行不同的函数
  • 从HTML读取出内容,并且完成字符串的替换 --> jinja2(模板语言)

(3)Python中 Web框架的分类

按上面三个功能划分:

  • 框架自带a,b,c --> Tornado
  • 框架自带b和c,使用第三方的a --> Django
  • 框架自带b,使用第三方的a和c --> Flask

按另一个维度来划分:

  • Django --> 大而全(你做一个网站能用到的它都有)
  • 其他 --> Flask 轻量级

4.django安装与基本设置使用

(1)django版本

现在主流的版本如下:

带有LTS表明是长期支持的版本

(2)本人使用版本

本人选择使用1.11

安装:可直接使用如下命令安装

1 pip3 install django==1.11.11

(3)创建django项目

  • 命令行创建:django-admin startproject mysite
  • pycharm创建:File --> New project --> 左侧选Django --> 右侧填项目路径,并且勾选python.exe

(4)设置django项目(settings.py)

配置HTML文件存放的位置:

 1 // settings.py中的TEMPLATES是用来配置项目模板文件(HTML)的路径
 2 TEMPLATES = [
 3     {
 4         'BACKEND': 'django.template.backends.django.DjangoTemplates',
 5         'DIRS': [os.path.join(BASE_DIR, 'templates')],
 6         'APP_DIRS': True,
 7         'OPTIONS': {
 8             'context_processors': [
 9                 'django.template.context_processors.debug',
10                 'django.template.context_processors.request',
11                 'django.contrib.auth.context_processors.auth',
12                 'django.contrib.messages.context_processors.messages',
13             ],
14         },
15     },
16 ]

配置静态文件存放的位置:

1 // 在setting.py中最下面写上这两条 配置静态文件目录
2 // 静态文件 -> css js 图片
3 STATIC_URL = '/static/'
4 STATICFILES_DIRS = (
5     os.path.join(BASE_DIR, 'static'),
6 )

修改django默认的语言:

1 # 将默认的英文改成中文
2 LANGUAGE_CODE = 'zh-hans'

将csrf规则注释:

1 注释settings.py的middlerware中的以下内容(csrf):
2 # 'django.middleware.csrf.CsrfViewMiddleware',

(5)运行django项目

1 Django项目的启动:
2     1. 命令行启动
3         在项目的根目录下(也就是有manage.py的那个目录),运行:
4         python3 manage.py runserver IP:端口--> 在指定的IP和端口启动
5         python3 manage.py runserver 端口   --> 在指定的端口启动
6         python3 manage.py runserver        --> 默认在本机的8000端口启动
7
8     2. PyCharm启动
9         点绿色的小三角,直接可以启动Django项目(前提是小三角左边是你的Django项目名)

(6)创建app

1 # django中的APP是什么:
2     整个project -> 一个大学(武汉大学)
3     一个APP -> 某个学院(计算机学院/金融学院/管理学院、、、)
4
5 APP可以方便我们在一个大的Django项目中,管理实现不同的业务功能
6
7 创建APP的命令
8 命令行 - 在Django项目的根目录输入:
9 python3 manage.py startapp app的名字

以下是创建APP的实例:

执行以上命令后文件夹如下:

最后要在settings.py中设置一下:

另外也可以在创建pycharm项目时随手创建一个APP:

(7)数据库配置

在Django项目中的settings.py中设置连接数据库的相关配置(告诉Django连接哪一个数据库):

 1 # Database
 2 # https://docs.djangoproject.com/en/1.11/ref/settings/#databases
 3
 4 # 默认使用sqlite数据库
 5 # DATABASES = { 6 #     'default': { 7 #         'ENGINE': 'django.db.backends.sqlite3',
 8 #         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 9 #     }
10 # }
11
12 # 数据库相关配置:
13 DATABASES = {
14     'default': {
15         'ENGINE': 'django.db.backends.mysql',  # 连接的数据库类型
16         'HOST': '127.0.0.1',    # 连接数据库的地址
17         'PORT': 3306,           # 端口
18         'NAME': "django",       # 数据库名称
19         'USER': 'root',         # 用户
20         'PASSWORD': 'root'      # 密码
21     }
22 }

如果要使用pymysql连接MySQL数据库,就要进行如下设置:

告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库,在项目/__init__.py文件中,写下面两句:

1 import pymysql
2 # 告诉Django用pymysql来代替默认的MySQLdb
3 pymysql.install_as_MySQLdb()

转载于:https://www.cnblogs.com/wyb666/p/9444150.html

django框架预备知识相关推荐

  1. Django框架基础知识汇总(有项目版)

    Web框架本质## web系统概念 1. Http,无状态,短连接 2. 浏览器(socket客户端).网站(socket服务端) web框架本质 import socket def handle_r ...

  2. Django框架基础知识05-自定义模板标签与过滤器

    根据一定规则,自己定义出符合需求功能的.用在任何你有需求的地方,因为内置的满足不了我们的需求,不同的东西有不同的定义规则 目前最最重要的就是HOW 一 文件路径配置: templates 存放自定义 ...

  3. Django框架总结

    一.Django框架前言知识: 1.C/S和B/S的区别: C/S结构软件: 客户端/服务端软件,即客户端要自己下载,安装之后才能访问服务端,服务端为开发的服务器. B/S结构软件: 浏览器/服务端软 ...

  4. python的django介绍_【Python基础知识】Django框架简介

    很多初学Python的小伙伴不知道该从何开始学起,其实零基础学习的话可以先学习一些Python基础知识,等基础打牢之后再去接触更加深入的技术,接下来小编就为大家简单介绍一下有关于 Django框架内容 ...

  5. (d2l-ai/d2l-zh)《动手学深度学习》pytorch 笔记(2)前言(介绍各种机器学习问题)以及数据操作预备知识Ⅰ

    开源项目地址:d2l-ai/d2l-zh 教材官网:https://zh.d2l.ai/ 书介绍:https://zh-v2.d2l.ai/ 笔记基于2021年7月26日发布的版本,书及代码下载地址在 ...

  6. 五分钟带你了解Django框架设计思想!

    Python编程语言的持续火爆,在最新Tiobe编程语言排行榜中位列第五,热度持续增加,尤其是在 AI 和 大数据时代,Python是 AI 和大数据时代的第一开发语言.这已经是一个不争的事实了,唯一 ...

  7. Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)(二)

    二.跨域: 回到顶部 跨域知识介绍: 点我以前博客 跨域解决方法:CORS:跨域资源共享 CORS请求分类(简单请求和非简单请求) 简单请求(simple request):只需要在头信息之中增加一个 ...

  8. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)

    阅读目录 一.Django请求生命周期: 二.WEB开发模式: 三.cbv源码分析: 四.认识RESTful 补充知识:跨域 五.基于原生django开发restful的接口 六.drf安装.使用.A ...

  9. 学习Identity Server 4的预备知识

    我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去.这里需要使用identity server 4 做单点登陆.下面就简单学习一下相关的预备知识. ...

最新文章

  1. 在block中进行行循环
  2. 人工智能的未来需要M1吗
  3. C#String地址、拼接性能学习
  4. 和方舟rust一样的手游_三大高人气手游盘点,《方舟:生存进化》的世界靠支配恐龙来生存...
  5. 东平县农民丰收节-农业大健康·万祥军:功能性谋定生态品牌
  6. Android心得4.1--文件的保存与读取及文件的操作模式详解.doc
  7. 后端在插入数据发现重复如何正确的弹出警告_前百度面试官整理的——Java后端面试题(一)...
  8. excel函数调用其他sheet单元格
  9. spss多元线性回归散点图_SPSS线性回归|别人不想告诉你的其他操作我都总结好了(中)...
  10. mongodb示例_MongoDB findAndModify()示例
  11. Mac下安装Fiddler抓包工具(别试了,会报错,没办法使用)
  12. css3ps—ps直接生成css3 使用方法
  13. html标题%3ctitle%3e,What's a valid HTML5 document?
  14. php 限定字符长度,PHP中字符串的最大长度是多少?
  15. vep视频转换为mp4文件
  16. ThinkPad E450 10.11 驱动HD4400的注意即解决方法
  17. 在计算机中1 KB等于多少字节,字节、kb、MB、GB 等单位怎么换算的?1M等于多少kb,1g等于多少kb?...
  18. Sentinel SuperPro加密锁编程开发
  19. 通过Arrays.asList数组转为集合的坑
  20. IoT 物联网碎片化是云厂商的桎梏,中小企业的机会

热门文章

  1. Java ObjectOutputStream writeFloat()方法与示例
  2. php字符串反转函数_PHP | 反转给定的字符串而不使用库函数
  3. c语言interrupt函数,中断处理函数数组interrupt[]初始化
  4. Hibernate配置C3P0连接池(在配好基本的hibernate配置下使用)
  5. HDU 1402——A * B Problem Plus
  6. android保持服务不休眠,Android开发保持屏幕常亮和CPU不休眠唤醒状态
  7. r语言系统计算上是奇异的_R语言实现并行计算
  8. C++ 类的const成员函数
  9. Linux的ext4文件系统学习笔记
  10. 01-复杂度2 Maximum Subsequence Sum (25 分)