基于第三方模块搭建简易web框架
views.py 里面放的是函数 我们管这些函数叫视图函数 视图层
urls.py 里面放的是 路由(后缀)与视图函数的对应关系 路由层
templates文件夹 里面放的全是HTML文件 模板层
动静态网页
静态网页
数据是写死的 万年不变(哪怕改变了 也是人为直接修改)
动态网页
数据是实时获取的
eg: 1.后端代码动态获取 当前时间
2.数据是从数据库查询出来的
jinjia2模板语法
专门用来处理后端数据与HTML页面的交互
模板语法(极其贴近python后端语法)
让你能够在HTML页面上 也能够用后端python语法来操作后端传来的数据
<p>{{ userDic }}</p>
<p>{{ userDic.username }}</p>
<p>{{ userDic['age'] }}</p>
<p>{{ userDic.get('hobby') }}</p>
<p>{{ userDic.get('hobby').0 }}</p>
<p>{{ userDic.get('hobby').1 }}</p>
<p>{{ userDic.get('hobby').2 }}</p>
模板语法中的循环语句
{% for user_dic in user_list %}
<tr>
<td>{{ user_dic.id }}</td>
<td>{{ user_dic.username }}</td>
<td>{{ user_dic.password }}</td>
</tr>
{% endfor %}
模板的渲染 将后端传给HTML文件的数据 在后端处理好 生成一个完整的HTML文件的过程
注意: 模板的渲染是在后端完成的 和前端没有关系
结合前端 自己写的后端框架 数据库(前端动态展示数据库数据)
python三大主流web框架(了解知识)
django 大而全 自带的组件和功能非常非常多
不足之处: 写小项目的时候 可能会比较笨重(大材小用)
flask 短小而精悍 自带的组件和功能贴别少
基本依赖于第三方组件
不足之处: 受限于第三方组件
如果将flask所有的第三方模块加起来 能够盖过django
tornado 异步非阻塞 这个框架甚至可以用来开发游戏服务器
a: socket部分
b: 路由匹配
c: 模板语法
django: a用别人的wsgiref(django默认的)
b自己写的
c自己写的
flask: a用别人的werkzeug
b自己写的
c用别人的jinjia2
tornado: a,b,c 都是自己写的
django框架介绍
注意事项:
1.计算机名称不能有中文
2.python解释器不要使用3.7版本 推荐使用3.4~3.6
django版本问题
django版本以1.11.11为主(1.11.9~1.11.13)
下载django 1.11.11
命令行输入 pip3 install django==1.11.11
如何检验django是否安装成功
命令行输入 django-admin
查询安装django版本
命令行输入 pip3 show django
卸载django
命令行输入 pip3 uninstall django
命令行创建项目
1.创建django项目
django-admin startproject 项目名(例如 mysite)
2.启动django项目
切换到项目文件夹下
python3 manage.py runserver
python3 manage.py runserver 127.0.0.1:8080
3.创建应用(django支持多app开发)
python3 manage.py startapp app01
注意:
1.不会自动帮你创建templates文件夹
2.配置文件中不会自动帮你书写templates文件路径
app的概念
django是一个以开发app为主要功能的web框架
app就是application应用的意思
一个django项目就是一所大学(空的架子本身没有任何功能)
而app就类似于大学里面的各个学院
一个空的django本身没有任何作用 仅仅是为了app提高前期的环境配置
你可以根据功能的不同 开发多个app
一个app对应一个具体的功能模块
用户相关的功能 用户相关的app
订单相关的功能 订单相关的app
商品相关的功能 商品相关的app
每一个app都有自己独立的功能
注意:
创建好的app需要在django配置文件中注册方可生效
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 'app01' # 简便写法
'app01.apps.App01Config' # 最完整的写法
]
pycharm创建项目
1.创建应用的时候 可以使用简便方式
Tools >>> run manage.py task
2.一定要确保同一个端口 同一时间只能启一个django项目
3.配置文件中针对templates文件夹的路径 如果是空着的需要你手动配置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
django小白必会三板斧
HttpResponse 返回字符串
render 返回html文件
可以给html页面传值
def login(request):
user_dic = {'username':'jason','password':'123'}
return render(request,'lobin.html',{'xxx':user_dic})
redirect 重定向
1.直接写在你本网站的路径后缀
2.也可以全路径
def home(request):
# return redirect('/login') # 重定向
return redirect('https:www.baidu.com') # 重定向
注意:
django默认是自动重启的
重启机制
内有检测机制 实时监测所有文件的变化
有时候会产生 你代码还没写完 就自动重启报错的情况 不用管
最好每次写完代码 自己手动重启