Python三大主流web框架: Django:大而全,自带了很多功能模块。类似于航空母舰,缺点是有点笨重。 Flask:短小精悍,自带的功能模块特别少,大部分依赖于第三方模块 Tornado:异步与非阻塞 主要用在处理高IO 、多路复用的情况,常用于游戏后端 三者的共同结构: a: socket b: 路由与视图函数 c: 模板渲染 Django: a用的别人的 wsgiref b自己写的 c自己写的 Flask: a用的别人的 werkzeug b自己写的 c用的别人的 jinja2 Tornado: a,b,c都是自己写的
使用Django过程中需要注意的小点: 1、计算机的名称不能有中文,如果存在,可以通过更改计算机设置来修改 2、一个pycharm窗口就是一个项目,不要将多个项目放在一个窗口里面 3、Django项目名不能起中文名 主要是考虑到编码过程中出现乱码的情况
Django 下载 建议下载含有LTS版本的Django,该类版本支持更新并且提供技术帮助! 下载方式: 方式一: 在pycharm里通过settings里直接下载,建议下载带有LTS版本的 方式二: 在终端通过命令行下载: pip install django==1.11.11 //此处的pip是配置好的python3下的pip 此处若下载过Django版本,再次下载会自动覆盖上次的版本,因此无需烦恼如何卸载。 同时需要注意,python3.7版本会和Django1.11版本起冲突,需要在一处做出修改即可,即将红框内一段代码
后的逗号去除即可!
当下载完成后,可以试试验证是否下载成功。 在终端里输入: django-admin
创建Django项目 方式一:在终端里输入命令行 创建django项目: django-admin startproject 项目名称 创建app应用: python manage.py startapp app01
python ../../manage.py startapp app02 # 如果app与manage之间差两档 启动django项目: python manage.py runserver 当创建完毕以后,是不会自动创建 templates 文件夹,自己手动创建后,此时还需将该文件夹路径添加到配置文件中,通过settings里的 TEMPlATES 将 'DIRS' 补全即可! 方式二:在pycharm里创建 创建django项目: FILE >>> new project >> django ,此时需要注意名字中不能存在中文,还要选择本地的python解释器,勾选后台管理 创建app应用: 方式1: 通过pycharm命令行创建 python manage.py startapp app01 方式2: 在Tool下的run manage task 功能栏 中选定以后,在弹出框输入 startapp app02 启动django项目: 点击小绿色箭头 补充点:使用django过程中,一定要保证 只要一个项目在运行,还需要清楚浏览器的缓存!
app的概念: 一个django可以当成一所学校,app是其中的学院 新创建的app需要手动在配置文件中完成注册才能生效。 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01.apps.App01Config' //此时也可以用简写: app01 最好一个app创建后就先去注册
Django 中各个文件的作用 应用名(创建的app下) migrations 数据库迁移记录相关数据 admin.py django后台管理相关 models.py 模型表相关 views.py 视图函数相关 项目名(创建的项目下) settings.py 配置文件 urls.py 路由与视图函数的映射关系 templates 项目用到的所有html文件 manage.py django项目入口文件
Django三板斧 from django.shortcuts import render,HttpResponse,redirect HttpResponse 返回字符串 render 返回一个html页面 redirect 重定向
from django.shortcuts import render,HttpResponse,redirect # Create your views here. def index(request): return HttpResponse('hello world') def reg(request): user_dic = {'name':'michael','password':'123'} return render(request, 'reg.html', locals()) #locals() 会将函数内部的变量名传给html文件 reg.html #另外一种传值的方式 #return render(request,'reg.html',{'user_dict':user_dict}) def login(request): return redirect('https://www.baidu.com') django 可以识别到代码的变化后自动更新,但是有时反映比较慢,可以手动重启,也可以刷新浏览器