前戏:
python三大主流web框架:
1.django
特点:1.大而全,自带的功能很多
2.不足之处在于笨重
2.flask
特点:
1.短小精悍,第三方模块很多
2.依赖于第三方库
3.tornado:异步非阻塞,支持高并发,可以开发游戏服务器

Django运行注意事项:

1.计算机名称不能有中文
2.一个pycharm窗口只开一个项目
3.项目里面文件名称尽量不要出现中文
4.python解释器尽量使用3.4-3.6之间的版本,最新版本可能报错
5.如果以上都没问题依旧报错,到最后一个报错信息进去删除逗号


Django版本:

Django3.x还在开发当中,忽略
1.x和2.x的区别不大



Django安装
pip3 install django==1.11.11(秉持着单身到底的原则)
验证是否安装成功
django-admin


创建Django项目
django-admin startproject 项目名
pycharm内创建(前提是已经安装django)

两种创建方式的区别:
1.命令行创建没有templates文件,需要自行创建,而pycharm会自动创建该文件并且自动在配置文件中配置路径,意味着用命令行创建的,需要自行配置

  1. mysite/
  2. ├── manage.py # 管理文件
  3. └── djangoleaning # 项目目录
  4. ├── __init__.py
  5. ├── settings.py # 配置
  6. ├── urls.py # 路由 --> URL和函数的对应关系
  7. └── wsgi.py # runserver命令就使用wsgiref模块做简单的web server
  8. login
  9. ├──admin.py django后台管理
  10. ├──apps.py 注册使用
  11. ├──migrations文件夹 数据库迁移记录
  12. ├──models.py 数据库相关的模型类 orm
  13. ├──tests.py 测试文件
  14. ├──views 视图函数

运行Django项目:

  1. python manage.py runserver 127.0.0.1:8000 #对应目录下执行

创建app:
django是专门用来开发app的web框架
注意:app不是移动端的app

命令行创建:python manage.py startapp app名
pycharm创建:
1.Terminal内敲命令创建
2.ctrl+alt+r 输入命令关键字创建

注意点:
创建的app需要注册才能生效

  1. INSTALLED_APPS = [
  2. 'django.contrib.admin',
  3. 'django.contrib.auth',
  4. 'django.contrib.contenttypes',
  5. 'django.contrib.sessions',
  6. 'django.contrib.messages',
  7. 'django.contrib.staticfiles',
  8. 'login'#将增加的app加入到配置文件
  9. ]

修改django端口:
菜单栏,运行按钮前:edit configureations 进入页面修改端口号

配置文件部分内容介绍:

  1. DEBUG = True #上线之后改为False
  2. ALLOWED_HOSTS = [] #上线之后可以写'*'
  3. INSTALLED_APPS #注册的app
  4. MIDDLEWARE #django中间件
  5. TEMPLATES #html存放路径配置
  6. DATABASES #项目指定数据库
  7. 其余的可自行查看

Django基础必备三件套:

  1. from django.shortcuts import HttpResponse, render, redirect

HttpResponse

内部传入一个字符串参数,返回给浏览器。
例如:

def index(request):
    # 业务逻辑代码
    return HttpResponse("OK")

render

除request参数外还接受一个待渲染的模板文件和一个保存具体数据的字典参数。
将数据填充进模板文件,最后把结果返回给浏览器。
例如:

def index(request):
    # 业务逻辑代码
    return render(request, "index.html", {"name": "alex", "hobby": ["烫头", "泡吧"]})

redirect(重定向)

接受一个URL参数,表示跳转到指定的URL。
例如:

def index(request):
    # 业务逻辑代码
    return redirect("/home/")#自己的时候只需要写路由

image.png