day 49

基于第三方模块搭建简易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默认是自动重启的
重启机制
内有检测机制 实时监测所有文件的变化
有时候会产生 你代码还没写完 就自动重启报错的情况 不用管

​ 最好每次写完代码 自己手动重启

原文地址:https://www.cnblogs.com/LZF-190903/p/11908729.html