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())