什么是Django
Python语言里最流行&强大的Web框架,同时亦是全球第5大WEB框架,可快速构建稳定强大的WEB项目,大大提高开发效率,Django自身集成了丰富的WEB开发通用组件,如用户认证、分页、中间件、缓存、session等,可以避免浪费大量时间重复造轮子
Http协议
超文本传输协议:规定了客户端与服务端消息传输的格式
四大特性:
1.基于TCP/IP协议作用于应用层的协议 (每次打开网站,都需要先建立好TCP/IP会话,这个活交给浏览器做)
2.基于请求响应 (你不主动请求网站,网站是不会主动给你发消息的)
3.无状态 (当浏览器多次发送请求给服务器的时候,服务器都会响应,但是他不知道你就是刚才那个浏览器,简单地说,就是服务器不会去记得你)
4.无连接 (当服务器端把请求的页面内容返回后,就把这次连接断开了,会话就结束了,你在浏览器上看到页面内容已经是下载到本地的了)
动静态网页
静态网页:
页面上的数据都是写死的,万年不变
动态网页:
页面上的数据是从后端动态获取的,比如:
1:后端获取当前时间
2:后端获取数据库数据然后传递给前端页面
模板渲染
后端生成的数据直接传递给前端页面使用(并且前端页面可以灵活的操作改数据) >>> 模板语法
模板渲染 模板语法需要依赖于第三方模块
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框架的本质
web框架的本质:
- 浏览器是socket客户端,网站是socket服务端
- wsgi,是一个规范,wsgiref实现了这个规范并在其内部实现了socket服务端
- 根据 url 的不同执行不同函数,即:路由系统
- 函数,即:视图函数
- 图片、css、js文件 统一称为静态文件,需要读取内容直接返回给用户浏览器
Django简介
Django下载(推荐下载1.11.11版本)
方式一:命令行直接下载
pip3 install django==1.11.11
方式二:pycharm下载
验证是否下载成功
命令行输入django-admin
创建django项目的方式
方式1(命令行创建):
创建django项目
django-admin startproject 项目名
创建app应用
python3 manage.py startapp app01
启动django项目
python3 manage.py runserver
ps:用命令行创建django默认不会自动创建templates文件夹
需要你手动自己创建(注意改文件夹路径是否被添加配置文件中)
方式2(pycharm创建)
FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理
创建app
pycharm命令行创建
python3 manage.py startapp app01
Tools下面run manage task功能栏
启动点小绿色箭头
强调:
1.用django一定要保证只有一个在运行状态 切记切记!!!!!!!
2.一定记得清浏览器的缓存
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' # 也可以简写
]
django各个文件的作用
应用名
migrations #数据库迁移记录相关数据
admin.py #django后台管理相关
models.py #模型表相关
views.py #视图函数相关
项目名
settings.py #配置文件
wsgi.py #指定框架的wsgi
urls.py #路由与视图函数的映射关系
templates #项目用到的所有的html文件
manage.py #django入口文件
django小白必会三板斧
from django.shortcuts import render,HttpResponse,redirect
HttpResponse 返回字符串
render 返回一个html页面
两种给前端页面传值的方式
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())
redirect 重定向