Django三大主流Web框架(django版本安装-项目创建-应用创建-django三板斧)
一:python三大主流web框架
1.python三大主流Web框架
django
特点:大而全 自带的功能特别特别特别的多 类似于航空母舰
不足之处:
有时候过于笨重
flask
特点:小而精 自带的功能特别特别特别的少 类似于游骑兵
第三方的模块特别特别特别的多,如果将flask第三方的模块加起来完全可 以盖过 django 并且也越来越像django
不足之处:
比较依赖于第三方的开发者,有时候也会受限于第三方模块
tornado
特点:异步非阻塞 支持高并发
速度非常快 快到甚至可以开发游戏服务器
不足之处:
暂时你不会

2:三大主流web框架特点
A:socket部分
B:路由与视图函数对应关系(路由匹配)
C:模版语法
django:
A用的是别人的 wsgiref模块
B用的是自己的
C用的是自己的(没有jinja2好用 但是也很方便)
flask:
A用的是别人的 werkzeug(内部还是wsgiref模块)
B自己写的
C用的别人的(jinja2)
tornado:
A,B,C都是自己写的
| A : socket部分 | B: 路由与视图匹配 | C: 模版语法 | |
|---|---|---|---|
| django | 别人的, wsgiref模块 | 自己写的 | 自己的(没有jinja2模块好用 但是也很方便) |
| flask | 别人的,wsgiref模块封装之后werkzeug | 自己写的 | 别人的,jinja2模块 |
| tornado | 自己写的 | 自己写的 | 自己写的 |
二:正常运行Django项目所需要知道的注意事项
1.计算机的名称不能有中文,不然bug在哪你都不知道!
解: 右键计算机 点击属性

2.一个pycharm窗口只开一个django项目
在pycharm窗口只能有一个django在运行状态,如果多开永远只有第一个在运行,且一个pycharm窗口就是一个项目,不要在窗口下面的子文件夹创建项目,不要和其他项目并列。
3.项目里面所有的文件也尽量不要出现中文
使用中文名极容易出现莫名其妙的报错,使用拼音也会显得非常不专业
4.python解释器尽量使用3.4~3.6之间的版本
5.浏览器一定要设置为不保存缓存
浏览器一定要设置为不保存缓存的,因为保存缓存可能会导致这次调试的前端效果仍旧是上次改动前的效果,浏览器还没读修改后的内容,用的是缓存数

清除浏览器缓存
1.在浏览器页面右键点击检查
2.点击设置齿轮图标 Settings
3.找到 Network
4.Disble cache(while DevTools is open) 勾选上
6.总结:以上方式还是报错解决方法
以上都符合,报错以下解决方式:
(如果你的项目报错 你点击最后一个报错信息
去源码中把逗号删掉)
三:Django的版本
1.Django版本问题
1. django的版本问题:
django1.x: 老项目再用
django2.x:新项目再用
django3.x:刚出来的
(3.X版本直接忽略 还在开发中)
1.X和2.X本身差距也不大 我们讲解主要以1.X为例 会讲解2.X区别
面试讲解:
公司之前用的1.8 满满过渡到了1.11版本 有一些项目用的2.0

三:django安装
1.命令行安装
pip3 install django (最新版本)
pip3 install django==1.11.11
2.pycharm下载django模块
如果已经安装了其他版本 无需自己卸载
直接重新装 会自动卸载安装新的
如果报错 看看是不是timeout 如果是 那么只是网速波动
重新安装即可

3.验证是否安装成功的方式1
终端输入django-admin看看有没有反应

四:命令行创建django项目
- 命令行创建(linux必备)
1.创建django项目前
你可以先切换到对应的D盘,然后再创建,不然会默认创建到C盘
D:
2.命令行创建项目
django-admin startproject 项目名
django-admin startproject mysite

mysite文件夹
manage.py
mysite文件夹
__init__.py
settings.py
urls.py
wsgi.py

3.启动django项目
一定要先切换到项目目录下
cd /mysite
python3 manage.py runserver
python3 manage.py runserver 127.0.0.1:8080 # 可以指定端口 本地回环地址
python3 manage.py runserver 8080
# http://127.0.0.1:8000/

五:django创建应用
1.app的概念
django是一款专注于开发app(应用)的web框架
我们创建一个django项目之后类似于创建了一所大学 而app就类似于大学里面的各个学院,每个学院都可以有自己独立的各项功能职责ajango相当于是一个空壳子用来给各个学院提供资源!!
1.比如开发淘宝
用户模块 user
订单模块 order
收货地址管理 :address
2.创建不同的app对应不同的功能
选课系统
学生功能
老师功能
ps: 一个app就是一个独立的功能模块
2.命令行创建应用
# cmd创建应用
Next, start your first app by running python manage.py startapp [app_label].
cd 项目名 : 切换到项目路径创建应用
1.命令行创建应用
python3 manage.py startapp 应用名
python3 manage.py startapp app01

注意:
应用名应该做到见名知意
user
order
web
...
但是我们演示统一就用app01/02/03/04

3.pycharm快捷方式创建项目
# pycharm快捷方式创建项目
1 new project 选择左侧第二个django即可

# 2 启动
1.还是用命令行启动
2.点击绿色小箭头即可

# 3 创建应用
1.pycharm提供的终端直接输入完整命令
python3 manage.py startapp app01
2.pycharm 提供的快捷方法
2.1 tools
2.2 run manage.py task提示(前期不要建议用)
输入:
startapp app01
# 4 修改端口号以及django server
edit confi....

4.:创建的应用一定要去配置文件中注册
# 我们手动创建的app一定要去settings文件中注册才能生效
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config', # 全写
'app01', # 简写
]
注意:
创建出来的的应用第一步先去配置文件中注册 不注册就识别不了。
ps:你在用pycharm创建项目的时候 pycharm可以帮你创建一个app并且自动注册

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

六:主要文件介绍
mysite 项目文件夹
mysite 文件夹
__init__.py
settings.py 整个django项目的全局配置文件
urls.py (路由层)路由与视图函数对应关系
wsgi.py WSGI协议,wsgiref服务器 uwsgi服务器
app01 应用名
__init__.py
admin.py django自带的后台管理系统
apps.py 注册使用
migrations文件夹 数据库迁移记录(日志)
models.py 模型层,以后跟数据库相关的都在这个里面(orm)
tests.py 测试文件
urls.py (路由层)路由与视图层函数对应关系
views.py 视图函数(视图层)主要用来写逻辑的
templates 写html页面的地方
manage.py django的入口文件
db.sqlite3 django自带的sqlite3数据库(小型数据库 功能不是很多还有bug)
七:django小白必会三板斧
1.django三板斧介绍
HttpResponse
返回字符串类型的数据
render
返回html文件的 还可以使用模板语法
redirect
重定向
2.HttpResponse
HttpResponse
返回字符串类型的数据
# 导入三板斧
from django.shortcuts import render,HttpResponse,redirect
# Create your views here.
def index(request):
"""
:param request: # 请求相关的所以数据 是一个对象 可以点 比之前的env更 牛逼
:return:
"""
return HttpResponse('你好我是django妹子')

3.render
render
返回html文件的 还可以使用模板语法
from django.shortcuts import render,HttpResponse,redirect
# Create your views here.
def index(request):
"""
:param request: # 请求相关的所以数据 是一个对象 可以点 比之前的env更牛逼
:return:
"""
return render(request, 'firet.html') # 自动去tempaltes文件夹下帮你查找文件

4.redirect
redirect
重定向
return redirect('https://mmzztt.com/') # 跳转别人网址
return redirect('/home/') # 重定向 跳转自己的网址 不加ip与端口
from django.shortcuts import render,HttpResponse,redirect
# Create your views here.
def index(request):
"""
:param request: # 请求相关的所以数据 是一个对象 可以点 比之前的env更 牛逼
:return:
"""
return redirect('https://mmzztt.com/') # 跳转别人网址
return redirect('/home/') # 重定向 跳转自己的网址 不加ip与端口
def home(request):
return HttpResponse('第一次home')

def ab_render(request):
# 视图函数必须要接受一个形参request
user_dict = {'username':'jason','age':18}
# 第一种传值方式 更加精确 节省资源
return render(request,'ab_render.html',{'data':user_dict,'date':123})
# 第二种传值方式 当你要传的数据特别多的时候
"""locals会讲所在的名称空间中所以的名字全部传递给html页面"""
return render(request,'ab_render.html',locals())
Django三大主流Web框架(django版本安装-项目创建-应用创建-django三板斧)的更多相关文章
- Web框架之Django_01初识(三大主流web框架、Django安装、Django项目创建方式及其相关配置、Django基础三件套:HttpResponse、render、redirect)
摘要: Web框架概述 Django简介 Django项目创建 Django基础必备三件套(HttpResponse.render.redirect) 一.Web框架概述: Python三大主流Web ...
- python三大主流web框架之Django安装、项目搭建
这一篇我们将迎来python强大的web框架Django,相信大家都已经不陌生,本篇将介绍Django的安装及基础项目搭建,大神略过~ Django是需要我们手动pip安装的,首先我们来安装Djang ...
- 详说Flask、Django、Pyramid三大主流 Web 框架
前言 目前随着 Python 在大数据.云计算.人工智能方面的热度,Python Web 应该也会被更多企业了解使用. Python Web 框架千万种,没必要都去了解和学习,身边总有人说高手都用 F ...
- Flask(1)- 主流web框架、初识flask
一.Python 现阶段三大主流Web框架 Django.Tornado.Flask 对比 Django 主要特点是大而全,集成了很多组件(例如Models.Admin.Form等等), 不管你用得到 ...
- 6 大主流 Web 框架优缺点对比:15篇前端热文回看
摘自:http://blog.csdn.net/VhWfR2u02Q/article/details/78993079 注:以下文章,点击标题即可阅读 <6 大主流 Web 框架优缺点对比> ...
- Django基础一Web框架的本质
我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求, ...
- python django基础一web框架的本质
web框架的本质就是一个socket服务端,而浏览器就是一个socker客户端,基于请求做出相应,客户端先请求,服务器做出对应响应 按照http协议的请求发送,服务器按照http协议来相应,这样的通信 ...
- Django-手撸简易web框架-实现动态网页-wsgiref初识-jinja2初识-python主流web框架对比-00
目录 自己动手实现一个简易版本的web框架 手撸一个web服务端 根据请求 url 做不同的响应处理 基于wsgiref模块实现服务端 用wsgiref 模块的做的两件事 拆分服务端代码 支持新的请求 ...
- 6 大主流 Web 框架优缺点对比(转)
英文: Kit Kelly 译文:oschina https://www.oschina.net/translate/web-frameworks-conclusions 是该读些评论和做一些总结 ...
- Scrapy框架——介绍、安装、命令行创建,启动、项目目录结构介绍、Spiders文件夹详解(包括去重规则)、Selectors解析页面、Items、pipelines(自定义pipeline)、下载中间件(Downloader Middleware)、爬虫中间件、信号
一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...
随机推荐
- echarts 改变个别省份的边界线颜色
想要实现地图,首先要引入china.js文件,如果有引入就直接调过本步骤去下方看代码,没有引入可以点击下方链接自行Ctrl c + Ctrl v china.js import "../.. ...
- spring cron表达式源码分析
spring cron表达式源码分析 在springboot中,我们一般是通过如下的做法添加一个定时任务 上面的new CronTrigger("0 * * * * *")中的参数 ...
- C#-4 方法
一 何为方法 方法是一块具有名称的代码,是类的函数成员. 方法主要分为方法头和方法体. void Method() { 语句1: 语句2: } 二 类型推断和var关键字 var sum = 15; ...
- SpringBoot课程学习(四)
一.profile的多文档配置方式 1.profile文件方式:提供多个配置文件,每个代表一种环境 如: 1.application-dev.properties/yml 开发环境 2.applica ...
- PHP全栈开发(二):MYSQL学习
昨天进行了CentOS 7 下面的 LAMP搭建 今天学习一下MySQL的一些入门级操作 主要参考PHP中文网的"MySQL最新手册教程" http://www.php.cn/my ...
- POJ2955 Brackets (区间DP)
很好的区间DP题. 需要注意第一种情况不管是否匹配,都要枚举k来更新答案,比如: "()()()":dp[0][5]=dp[1][4]+2=4,枚举k,k=1时,dp[0][1]+ ...
- win7升级到win10系统后,node13升级为node16,node版本node-sass版本与不匹配,导致出现npm ERR! ERESOLVE could not resolve
1. 错误npm ERR! code ERESOLVE 系统从win7升级到win10,之前的node版本是13.14.0,现在版本是16.17.1.正常的vue程序无法正常运行.从网上查询得知&qu ...
- LeetCode------递归(爬楼梯)
1.递归 1.一个问题的解可以分解为几个子问题的解. 2.这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样 3.存在基线/终止条件 来源:力扣(LeetCode) 链接:https:// ...
- golang中的选项模式
索引 https://waterflow.link/articles/1663835071801 当我在使用go-zero时,我看到了好多像下面这样的代码: ... type ( // RunOpti ...
- 基于BP神经网络的手MNIST写数字识别
import numpy import math import scipy.special#特殊函数模块 import matplotlib.pyplot as plt #创建神经网络类,以便于实例化 ...