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

  • 网络协议
  • 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. 并行处理框架Celery的Web监控管理服务-Flower

    安装和使用 使用pip安装Flower: $ pip install flower或 pip install flower -U -i https://pypi.tuna.tsinghua.edu.c ...

  2. [转] Git caret(^) and tilde(~)

    点击阅读原文 I spent a little bit of time playing with Git today, specifically the way that the ^ (caret) ...

  3. (六)MySQL数据、库、表的管理

    目录 数据的管理 库的管理 表的管理 数据的管理 一.数据插入语句 1.语法: INSERT INTO 表名(列名,...) VALUES(值1,...); 2.案例:在beauty表中添加一条信息( ...

  4. sublime Text3 实现2:1:1三分屏效果

    小trick, 水一篇博客 先上效果图 由于写题啥的时候需要重定向输入输出改数据对拍, 设置成这样的效果就非常直观的看数据 直接切题, 首选项--快捷键--default里搜索alt+shift+1( ...

  5. cb47a_c++_STL_算法_排列组合next_prev_permutation

    cb47a_c++_STL_算法_排列组合next_prev_permutation 使用前必须先排序.必须是 1,2,3或者3,2,1.否者结果不准确.如果, 1,2,4,6.这样数据不会准确nex ...

  6. PHP丨PHP基础知识之流程控制for循环「理论篇」

    今天公司同事在看for循环,那么我们今天就来讲讲for循环吧! for循环是编程语言中一种循环语句,而循环语句由循环体及循环的判定条件两部分组成,其表达式为:for(单次表达式;条件表达式;末尾循环体 ...

  7. 记录工作中遇到的BUG,经典的数据库时区问题和字段类型tinyint(1)问题

    记录工作中发现的相对而言经典的问题 [数据库时区问题] 我个人数据库配置为CST 如下 我们测试环境的数据库配置为UTC 如下 倘若我修改了测试环境数据库时区为CST.由此造成的问题是 系统读取到数据 ...

  8. Java深拷贝和浅拷贝的区别

    浅拷贝 被复制的对象的所有的变量都与原对象有相同的值,而所有的引用对象仍然指向原来的对象.换言之,浅拷贝 不复制引用对象. 1 class Experience { 2 private String ...

  9. IWAB0398E Error in generating WSDL from Java: java.lang.ClassNotFoundException

    今天想用Eclipse创建WebService,报错信息 IWAB0398E Error in generating WSDL from Java: java.lang.ClassNotFoundEx ...

  10. TestNG配合catubuter统计单元测试的代码覆盖率

    build-testNG.xml对应的ant脚本为 <?xml version="1.0" encoding="UTF-8"?> <proje ...