学习注意事项:

建议学习过程中注意两点:

  • 为每一个项目建立虚拟环境,建立相对独立的开发环境
  • 严格按照学习资料的版本进行开发。

先在知乎找资料,然后再学

MVT框架

  • m表示model,负责与数据库交互
  • v表示view,是核心,负责接收请求、获取数据、返回结果
  • t表示template,负责呈现内容到浏览器

虚拟环境

使用Python进行项目开发时,由于不同的项目需要,可能会配置多个开发环境不同开发环境之间的项目依赖包如果混合在一起,可能会引起意想不到的错误,本文主要介绍如何通过虚拟环境隔离不同开发环境,方便不同开发环境的共存。(多项目

目录说明

  • manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互
  • 内层的目录(和项目名称一样):项目的真正的Python包
  • _init _.py:一个空文件,它告诉Python这个目录应该被看做一个Python包
  • settings.py:项目的配置
  • urls.py:项目的URL声明
  • wsgi.py:项目与WSGI兼容的Web服务器入口

创建应用

  • 在一个项目中可以创建一到多个应用,每个应用进行一种业务处理
python manage.py startapp booktest

服务器

  • 运行如下命令可以开启服务器
python manage.py runserver ip:port
  • 可以不写ip及以后的,默认端口为8000

视图views.py

  • 在django中,视图对WEB请求进行回应
  • 视图接收reqeust对象作为第一个参数,包含了请求的信息
  • 视图就是一个Python函数,被定义在views.py中

模板

  • 模板是html页面,可以根据视图中传递的数据填充值

ORM简介

  • ORM是“对象-关系-映射”的简称,主要任务是:

    • 根据对象的类型生成表结构
    • 将对象、列表的操作,转换为sql语句
    • 将sql查询到的结果转换为对象、列表
  • 这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动
  • Django中的模型包含存储数据的字段和约束,对应着数据库中唯一的表

数据库开发流程

  1. 在models.py中定义模型类,要求继承自models.Model
  2. 把应用加入settings.py文件的installed_app项
  3. 生成迁移文件
  4. 执行迁移生成表
  5. 使用模型类进行crud操作

视图本质就是一个函数

  • 视图接受Web请求并且返回Web响应
  • 视图就是一个python函数,被定义在views.py中
  • 响应可以是一张网页的HTML内容,一个重定向,一个404错误等等

模板介绍

  • 作为Web框架,Django提供了模板,可以很便利的动态生成HTML
  • 模版系统致力于表达外观,而不是程序逻辑
  • 模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用
  • 模板包含
    • HTML的静态部分
    • 动态插入内容部分
  • Django模板语言,简写DTL,定义在django.template包中

定义模板

  • 模板语言包括

    • 变量
    • 标签 { % 代码块 % }
    • 过滤器
    • 注释{# 代码或html #}

变量

  • 语法:
{{ variable }}

过滤器

  • 语法:{ { 变量|过滤器 }},例如{ { name|lower }},表示将变量name的值变为小写输出
  • 使用管道符号 (|)来应用过滤器
  • 通过使用过滤器来改变变量的计算结果

模板继承

  • 模板继承可以减少页面内容的重复定义,实现页面内容的重用
  • 典型应用:网站的头部、尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义
  • block标签:在父模板中预留区域,在子模板中填充
  • extends继承:继承,写在模板文件的第一行

csrf

  • 全称Cross Site Request Forgery,跨站请求伪造
  • 某些恶意网站上包含链接、表单按钮或者JavaScript,它们会利用登录过的用户在浏览器中的认证信息试图在你的网站上完成某些操作,这就是跨站攻击
  • 演示csrf如下
  • 创建视图csrf1用于展示表单,csrf2用于接收post请求

管理静态文件

  • 项目中的CSS、图片、js都是静态文件

使用Ajax

  • 使用视图通过上下文向模板中传递数据,需要先加载完成模板的静态页面,再执行模型代码,生成最张的html,返回给浏览器,这个过程将页面与数据集成到了一起,扩展性差
  • 改进方案:通过ajax的方式获取数据,通过dom操作将数据呈现到界面上
  • 推荐使用框架的ajax相关方法,不要使用XMLHttpRequest对象,因为操作麻烦且不容易查错
  • jquery框架中提供了$.ajax、$.get、$.post方法,用于进行异步交互
  • 由于csrf的约束,推荐使用$.get

服务器介绍

  • 服务器:私有服务器、公有服务器
  • 私有服务器:公司自己购买、自己维护,只布署自己的应用,可供公司内部或外网访问
  • 公有服务器:集成好运营环境,销售空间或主机,供其布署自己的应用
  • 私有服务器成本高,需要专业人员维护,适合大公司使用
  • 公有服务器适合初创公司使用,成本低

Git简介

黑马程序员django课程相关推荐

  1. 黑马程序员的课程不如兄弟连兄弟会好

    [黑马程序员的课程不如兄弟连兄弟会好 兄弟连兄弟会it开发培训 www.itxdh.net 企鹅群:499956522 高端人才培养就到[兄弟连兄弟会it开发培训]纯免费的高端IT人才培养] 职场中的 ...

  2. 黑马程序员C++课程的资源分享

    看完了黑马程序员C++教程的全部. 说实话入门挺合适的,但是距离工作感觉还是远远不够的,其中最深的就是到了C++的STL部分,包括做项目需要的多线程啊.网络编程啊啥的都还没有,我找了一下他们公开课上面 ...

  3. 哔哩哔哩黑马程序员C++课程个人学习笔记

    写在前面:此博文仅作为个人c++学习笔记,或有错误不建议参考!!! 视频链接:黑马程序员c++教程从0到1 目录 一.第一部分c++基础 1.1 c++初识 1.1.1 hello world 1.1 ...

  4. Linux 学习笔记(借鉴黑马程序员Linux课程)

    Linux视频课程 简介 Linux诞生于1991年,由林纳斯·托瓦兹在21岁时完成.此后成为最为流行的服务器操作系统之一. Linux内核和系统发行版 由Linux系统内核和系统级应用程序两部分组成 ...

  5. C++中set容器的基本使用----在B站听黑马程序员c++课程的记录

    set\multiset容器 概念 构造和赋值 大小和交换 插入和删除 查找和统计 排序 pair队组 概念 集合,插入数据的同时自动排好顺序,也叫关联容器.底层结构是二叉树实现. set和multi ...

  6. 黑马程序员_MongoDB笔记

    根据黑马程序员的课程资料整理所得,仅用于学习使用,如有侵权,请联系删除 1.MongoDB简单介绍 1.1 MongoDB应用场景 应对三高需求 High performance - 对数据库高并发读 ...

  7. 传智播客.黑马程序员,学C++不再难!

            众所周知,C++难.就好像博大精深的汉语比英语难,这是客观事实,我们并不否认.        但,转念想想,英语也不简单吧?从小学开始学,到了大学,挂在四六级上的同学数不胜数.可貌似没 ...

  8. 黑马程序员SSM_Spring笔记(自用)

    根据黑马程序员的课程资料整理所得,仅用于学习使用,如有侵权,请联系删除 目录 Spring Framework(以下简称Spring) Spring的系统架构 Spring_核心概念及入门案例 1.I ...

  9. 【C++】黑马程序员-C++核心编程学习笔记

    前言 根据黑马程序员C++课程内容,结合讲义,将自己学习C++的过程中将自己觉得有必要记下的笔记进行整理,方便复习回顾,编程环境为VSCode. 本阶段主要针对C++面向对象编程技术做详细讲解,探讨C ...

最新文章

  1. linux下安装oracle 10g
  2. 简单搜索(多位自幂数)+数列网站
  3. nginx.conf 基本配置模板和结构
  4. MVC后台创建Json(List),前台接受并循环读取
  5. Bootstrap 5款常用模板
  6. 【Python】Python语言math模块可用函数
  7. Beatiful Soup获取淘宝商品详情
  8. java三国群雄_三国群英-真三国无双
  9. java实现n选m组合数_求组合数m_n
  10. JupyterLab的安装笔记
  11. OSGB 倾斜摄影数据生产完成后裁剪模型问题
  12. 关于SM2加密验签的操作
  13. Apache opennlp简单介绍
  14. oracle gbk 无法识别,oracle 字符集总结(超出GBK范围的字符存取问题未解决)
  15. 【BZOJ4987】Tree 树形DP
  16. 分享收集网络上的免费0元虚拟主机
  17. 单引号,双引号,转义
  18. 聊天框 contenteditable 上传图片及贴图
  19. 【CSS 形状 (Shapes)】
  20. 干货 | 日访问过亿,办公IM及开放式平台在携程的实践

热门文章

  1. java计算机毕业设计WEB儿童运动馆业务信息系统源码+mysql数据库+系统+lw文档+部署
  2. 爱奇艺App架构升级之路——64位适配探索与实践
  3. 软件测试集群,集群搭建完成简要测试集群(性能)带宽与IOPS
  4. 人工智能之二分类的简单实现
  5. linux USB大容量设备驱动入门之读取U盘容量
  6. 视频教程-Web前端开发利器 SPRY框架之页面效果-JavaScript
  7. ios企业签名常见问题大全
  8. ZeroMQ:云时代极速消息通信库
  9. 论文阅读笔记---Recent development in CNC machining of freeform surfaces: A state-of-the-art review
  10. 什么?跑跑卡丁车明天要出手游了?电脑玩跑跑卡丁车手游攻略提前看