初识 Django
Django介绍
HTTP协议:
定义:超文本传输协议:规定了客户端与服务端消息传输的格式
四大特性:
1.基本TCP/IP 协议作用于应用层的协议
2.基于请求响应
3.无状态
4.无连接
数据格式之请求:
请求首行
请求头(一堆k,v键对))
(空格)
请求体(post请求携带的数据)
数据格式之响应:
响应首行
响应头(一堆k,v键对)
(空格)
响应体(post请求携带的数据)
响应状态码:
1xx:服务器已经成功接收到你的数据正在处理,你可以继续提交数据
2xx:请求成功 服务器已经成功接收到你的数据发送给你了
3xx:重定向
4xx:请求资源错误/不存在
5xx:服务器错误
动静态网页
静态网页:
页面上的数据都是写死的,万年不变
动态网页:
页面上的数据是从后端动态获取的
比如后端获取当前时间
后端获取数据库数据然后传递给前端页面
模板渲染
后端生成的数据直接传递给前端页面使用(并且前端页面可以灵活的操作改数据) >>> 模板语法
模板渲染 模板语法需要依赖于第三方模块
pip install jinja2
模板语法 jinja2支持前端直接使用类似于python的语法操作数据
<p>{{ user_dic }}</p>
<p>{{ user_dic.name }}</p>
<p>{{ user_dic['password'] }}</p>
<p>{{ user_dic.get('name') }}</p>
{% for user in user_dict %} <!--[{},{},{},{}]-->
<tr>
<td>{{ user.id }}</td>
<td>{{ user.name }}</td>
<td>{{ user.password }}</td>
</tr>
{% endfor %}
什么是web框架?
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安装配置
安装 :pip3 install django==1.11.11
一、 使用 :django-admin startproject 项目名称
创建app :cd 项目名称 python3 manage.py startapp app01(子项目)
文件目录介绍:
-项目名
----settings:全局配置信息
----urls:总路由,请求地址跟视图函数的映射关系
-应用名
----mingrations:数据库迁移记录
----admin.py:Django后台管理相关
----models.py 数据库表模型
----views 视图函数()
--static 存放(静态文件、css、js、img)
--templates : html存放
--manage.py ---项目入口,执行一些命令
二、新建目录
-static 存放静态文件(css、文件) 在settings中 TEMPLATES中查看路径存不存在
STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]
-templates html存放,在settings中 TEMPLATES中查看路径存不存在
三、配置settings.py
(1)每新建一个app必须在配置文件中注册:在 INSTALLED_APPS 下添加 'app01.apps.App01Config'
(2)TEMPLATES 中'DIRS':[
os.path.join(BASE_DIR, 'templates')
]
(3)在配置文件最后加 :STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static'),
]
(4)要把 MIDDLEWARE 中(注释掉)...CsrfViewMiddleware
四、数据库建表迁移指令
python3 manage.py makemigrations
python3 manage.py migrate
五、执行项目:
python3 manage.py runserver 127.0.0.1:8001
django小白必会三板斧
引用:
from django.shortcuts import render,HttpResponse,redirect
⑴ HttpResponse : 返回字符串
⑵ redirect :重定向
⑶ render : 返回一个html页面
render 两种给前端页面传值的方式
def reg(request):
user_dict = {'name':'jason','password':'123'}
return render(request,'reg.html',{'user_dict':user_dict})
def reg(request):
user_dict = {'name':'jason','password':'123'}
return render(request,'reg.html',locals())