每次看到这里都要回顾几个知识点:

  • 网络协议
  • http协议(四大特性)
  • 数据格式
  • 响应状态码

复习地址:

一、借助wsgiref模块实现简易版web框架

'''
urls.py 路由与视图函数的对应关系
views.py 视图函数(后端的业务逻辑)
manage.py 启动文件
templates文件夹 专门用来存放html '''

二、动静态页面

  • 静态页面

    • 页面上的数据是直接写死的,不会变化
  • 动态页面
    • 页面上的数据是实时获取的
# 动态网页制作1
# 主要方法是获取后端页面代码(字符串),替换字符串中的某些数据为我们后端写的代码,比如下面的时间
import datetime
def get_time(env):
current_time = datetime.datetime.now().strftime('%Y-%m-%d %X')
# 如何将后端获取到的数据"传递"给html文件?
with open(r'templates/03 mytime.html','r',encoding='utf-8') as f:
data = f.read()
# data就是一堆字符串
data = data.replace('dwadasdsadsadasdas',current_time) # 在后端将html页面处理好之后再返回给前端
return data # 动态页面制作2
# 将一个字典传递给html文件 并且可以在文件上方便快捷的操作字典数据
from jinja2 import Template
def get_dict(env):
user_dic = {'username':'jason','age':18,'hobby':'read'}
with open(r'templates/04 get_dict.html','r',encoding='utf-8') as f:
data = f.read()
tmp = Template(data)
res = tmp.render(user=user_dic)
# 给get_dict.html传递了一个值 页面上通过变量名user就能够拿到user_dict
return res # 后端获取数据库中数据展示到前端页面 <body> # 模版语言
# 可以简单的取值
{{ user }}
{{ user.get('username')}}
{{ user.age }}
{{ user['hobby'] }} # 也可以for循环创建table
{% for user_dict in user_list %}
<tr>
<td>{{ user_dict.id}}</td>
<td>{{ user_dict.username}}</td>
<td>{{ user_dict.password}}</td>
<td>{{ user_dict.hobby}}</td>
</tr>
{% endfor%} </body>

三、python三大主流web框架

A:socket部分

B:路由与视图函数的对应关系(路由匹配)

C:模版语法

  • django

    • 特点:大而全,自带的功能多
    • 缺点:笨重
    • A是用别人的:wsgiref模块,B是用自己的,C是用自己的
  • flask
    • 特点:小而精,自带的功能少,但是第三方的库多
    • 缺点:比较依赖第三方开发者
    • A是用别人的:werkzeug(内部还是wsgiref模块),B是自己写的,C是用别人的(jinja2)
  • tornado
    • 特点:异步非阻塞,支持高并发,可以作为游戏服务器开发
    • 缺点:None
    • ABC都是自己写的

四、启动一个django项目

1 启动前的注意事项

1.1 计算机的问题

  • 计算机名称不能有中文
  • 一个pycharm窗口只能开一个项目
  • 项目里面的所有文件也尽量不能出现中文
  • python解释器尽量使用3.4-3.6之间的版本,如果用高版本的python可能会报错,点击最后一个报错信息,删除一个逗号即可。

1.2 django版本的问题

1.X,2.X用的比较多3.X由于是最近发行的先不考虑

目前学习的版本是1.11.11

1.3 django安装

命令行输入:pip3 install django==1.11.11

或者在settings里面安装,注意要切换python解释器

检验是否安装成功,在命令行输入:django-admin

2 django的基本操作(终端版)

2.1 创建django项目

到指定盘符cmd输入:django-admin startproject mysite

此时会发现创建了一个文件夹

  • mysite

    • manage.py
    • mysite
      • '_init _.py'
      • settings.py
      • urls.py
      • wsgi.py

2.2 启动django项目

cmd切换到mysite下,输入:python manage.py runserver

2.3 创建应用

cmd到mysite下,输入:python manage.py startapp app01(app的名称应该见名知意)

3 django基本操作(pycharm版)

创建项目:点击新建项目即可(注意python版本)

启动:pycharm命令行,或者启动manage.py

创建app:pycharm命令行,或者点击tools,点击run manage.py task... 提示创建

修改端口号:点击edit confi

4 应用(app)

django是一款专门开发app的web框架,这里的app不是手机的app,而是功能的意思。一个app代表一类功能,一个django框架就是一群app的集合体。

注意:每次创建完app后都要到settings里去注册app

# 找到项目下的settins.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config', # 全写
'app01', # 简写
]

5 主要文件介绍

mysite(项目文件夹)

  • mysite(文件夹)

    • settings.py 配置文件
    • urls.py 路由与视图函数的对应关系(路由层)
    • wsgi.py wsgiref模块(不考虑)
  • manage.py 启动文件
  • db.sqlite3 自带的小型数据库,功能不是很完善还有bug
  • app01 (文件夹)
    • admin.py django后台管理
    • apps.py 注册使用
    • migrations 数据迁移记录
    • models.py 数据库相关的模型类(orm)
    • tests.py 测试文件
    • views.py 视图函数

6 命令行创建和pycharm创建的区别

# 1 命令行创建不会自动有templatew文件夹 需要你自己手动创建而pycharm会自动帮你创建并且还会自动在配置文件中配置对应的路径
# pycharm创建
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
]
# 命令行创建
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
]
"""
也就意味着你在用命令创建django项目的时候不单单需要创建templates文件夹还需要去配置文件中配置路径
'DIRS': [os.path.join(BASE_DIR, 'templates')]
"""

7 django小白必会三板斧

  • HttpResponse

    • 返回字符串类型的数据
  • render
    • 返回html文件
  • redirect
    • 重定向
    • 指定页面:return redirect('https://www.mzitu.com/')
    • 拼接当前页面:return redirect('/home/')

day59 django初识的更多相关文章

  1. Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识

    本节内容 JavaScript 正则表达式 Django初识 正则表达式 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  2. Django 初识

    Django  初识 一.前言 Django是一款网站架构,能够快速的搭建一个网站.openstack的界面显示使用的就是Django的框架.所以,学习openstack多少要了解一些Django的内 ...

  3. Web框架的原理和Django初识

    一.Web框架的本质 1.本质 实际上Web应用本质上就是一个socket服务端, 而用户的浏览器就是一个socket客户端. 2.最原始的web框架 socket服务端 import socket ...

  4. Python之旅Day15 Bootstrap与Django初识

    Bootstrap初识 Bootstrap简介 Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目.(官网http://www.boo ...

  5. Django初识 学习笔记一

    Django初识 学习笔记一 mvcviewsmodelstemplate. 一 MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(c ...

  6. Django框架(一)-Django初识

    Django初识 一.Web框架本质—自己实现Web框架 1.所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端 import socket sk = sock ...

  7. django初识1

    django django初识 django的本质就是基于socket通信 一.127.0.0.1 本地回环地址 后面:8001是端口号 /ppt是根目录下的ppt子网页 二./当前网站的客户端(根目 ...

  8. Django初识

    web框架 Web应用框架有助于减轻网页开发时共通性活动的工作负荷,例如许多框架提供数据库访问接口.标准样板以及会话管理等,可提升代码的可再用性.简单地说,就是你用别人搭建好的舞台来做表演,用别人做好 ...

  9. Django 2.0 学习(01):Django初识与安装

    Django(Python Web框架) Django是一个开放源代码的Web框架,用Python写的.采用了MTV的框架模式,即模型M,模板T和视图V.它最初被开发是用来管理以新闻内容为主的网站,即 ...

随机推荐

  1. PMBOK 基础知识(1)

    启动.结束过程 项目管理计划 第一章  引论 第2章项目运行环境 第3章 项目经理的角色 第4章 项目整合管理 第5章 项目范围管理 第6章 项目进度管理 第7章 项目成本管理 第8章 项目质量管理  ...

  2. Flink 如何分流数据

    场景 分流方式 如何分流 使用Filter分流 使用Split分流 使用Side Output分流 场景 获取流数据的时候,通常需要根据所需把流拆分出其他多个流,根据不同的流再去作相应的处理. 举个例 ...

  3. C# 9.0 新特性之参数非空检查简化

    阅读本文大概需要 1.5 分钟. 参数非空检查是缩写类库很常见的操作,在一个方法中要求参数不能为空,否则抛出相应的异常.比如: public static string HashPassword(st ...

  4. Pytorch中的自动求梯度机制和Variable类

    自动求导机制是每一个深度学习框架中重要的性质,免去了手动计算导数,下面用代码介绍并举例说明Pytorch的自动求导机制. 首先介绍Variable,Variable是对Tensor的一个封装,操作和T ...

  5. Spring Cloud Alibaba系列(四)使用gateway作为服务网关

    什么是网关 在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计.开发.测试.部署和管理.这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计, ...

  6. LeetCode 78,面试常用小技巧,通过二进制获得所有子集

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题第47篇文章,我们一起来看下LeetCode的第78题Subsets(子集). 这题的官方难度是Medium,点赞 ...

  7. navicat 出现 mysql远程连接问题 Lost connection to MySQL server at ‘reading initial communication packet', system error: 0

    今天做服务器上的东西需要看数据库时,突然发现有这个报错,然后自己也查了很多资料 我最后找到一个在my,cnf配置文件中mysqld下加入一条 max_allowed_packet = 500M 也就是 ...

  8. ubuntu 显示桌面快捷键

    ubuntu 显示桌面快捷键 快速显示桌面的快捷键是 ctrl + win + d win:就是窗口键,在键盘左侧ctrl与Alt之间的那个建.

  9. Andrew Ng - 深度学习工程师 - Part 2. 改善深层神经网络:超参数调试、正则化以及优化(Week 2. 优化算法)

    ===========第2周 优化算法================ ===2.1 Mini-batch 梯度下降=== epoch: 完整地遍历了一遍整个训练集 ===2.2 理解Mini-bat ...

  10. ODBC 常见数据源配置整理

    目录 1. 简介 1.1 ODBC和JDBC 1.2 ODBC配置工具 1.3 ODBC 数据源连接配置 2. MySQL 数据源配置 2.1 配置步骤 2.2 链接参数配置 3. SQLServer ...