一、基本了解
- wsgiref模块快速搭建网络服务
- jinja2模块的模板语法
- 三大主流框架比较
框架组成分为三部分:socket部分、路由与视图函数对应关系(路由匹配)、模板语法
框架名称 | 优缺点及组成 |
---|
django | 优点:大而全;缺点:笨重;组成:wsgiref模块+自己的+自己的 | flask | 优点:小而精;缺点:依赖第三方;组成:werkzeug模块(内部是wsgiref)+自己的+jinja2模块 | tornado | 优点:异步非阻塞,支持高并发;缺点:略过;组成:全自己的 |
二、django环境要求及基础操作
计算机名称不要有中文
-
Django框架要求:python版本3.4-3.6,django模块版本要求:1.x(为主),2.x(为次),搭配为python3.6和django1.11.11 -
检测django是否安装成功:在命令行中输入django-admin -
创建项目流程(命令行版):
- 切换目录到目标目录,创建项目:django-admin startproject mysite
- 启动项目:python3 manage.py runserver,python3 manage.py runserver 127.0.0.1:9000
- 生成项目时默认的IP和端口是127.0.0.1和8000,随后 可在浏览器中访问127.0.0.1:8000
- 继续添加应用app:python3 manage.py startapp app01
-
创建项目流程(pycharm版):
- file->new project 创建项目
- 启动项目:tools --> run manage.py Task
- 创建app:法一:在pycharm下方的命令行中输入完整命令创建;法二:run manage.py之后使用简写startapp app01创建
- 播放按钮旁边的edit configuration修改项目配置属性
-
命令行创建django项目不会有templates文件夹,而且配置文件settings.py中的dirs不一样,即templates的路径 -
创建app之后要去注册,添加到settings.py里面的installed_apps,方式有两种:‘app01.apps.App01Config’,‘app02’ -
settings.py文件解读
字段 | 作用 |
---|
DEBUG | 后台打印信息,项目上线后可改为False | DATABASES = {} | 数据库连接配置相关,DATABASES = {‘default’: {‘ENGINE’: ‘django.db.backends.mysql’,‘NAME’: ‘db01’,‘USER’: ‘root’,‘PASSWORD’: ‘123’,‘HOST’: ‘127.0.0.1’,‘PORT’: ‘3306’,‘CHARSET’: ‘utf8’,}} |
- 在项目名下面的__init__.py中声明:
import pymysql pymysql.install_as_MySQLdb()
mysite项目文件组成解读
- mysite文件夹:
–settings.py 配置文件 –urls.py 路由与视图函数对应关系(路由层) –wsgi.py wsgiref模块(不考虑) –manage.py django的入口文件 –db.sqlite3 django自带的sqllite3数据库,功能不多bug多 - templates文件夹:html文件存放路径配置
- app01文件夹:
–admin.py django后台管理 –apps.py 注册使用 –migration.py 数据库迁移记录 –models.py 数据库相关的模型类(orm对象关系映射) –tests.py 测试文件 –views.py 视图函数(视图层)
三、基础操作三板斧
- 准备工作:
1.项目名同名的文件下的urls.py中添加url(r’^index/’, 目标文件函数的位置) 2.注意函数之间的参数传递是request,比env更高级,因为request是一个对象 3.teplates文件夹中创建一个test.html
三板斧导入 | from django.shortcuts import render, HttpResponse, redirect |
---|
render | 主要用来返回html文件(存放在templates文件夹中),可以添加参数传递(两种方式),return render(request, ‘test.html’) | Httpresponse | 主要用来返回字符串,return HttpRespnse(‘hello world!’) | redirect | 重定向到别的网址(也可以跳转到自家的网址),return redirect(‘https://www.baidu.com/’) |
静态文件配置:settings.py文件中的STATIC_URL是令牌,另外在下方添加静态文件路径 STATICFILES_DIRS = [os.path.join(BASE_DIR, ‘static’]
令牌动态解析{% load static %}
403forbidden(提交post请求遇到):settings.py文件中的MIDDLEWARE将’django.middleware.csrf.CsrfViewMiddleware’注释掉
urls.py:取消url自动加斜杠:在settings.py中添加APPEND_SLASH = False,默认是True
四、其他
|