Python之模板继承 and http综合

1.模板的继承
模板继承语法:

    1.如何继承某个模板?
            {%  extends   ''模板名称"  %}
    2.如何深挖和填坑?
      深挖:
         {%  block   名称 %}
             默认值
         {%  endblock   %}
    3.如何调用/继承被替代的模板?
       挖坑:
       {% block  名称   %}
             默认值
       {% endblock %}
       填坑:
          { % block  名称  % }
          #如何继承挖坑的的默认值
                {{  super () }}
          #后面写新加的方法
          。。。。
          {{ endblock  %}

在这里插入图片描述

在这里插入图片描述

2.常见http方法之get和post
首先有两个重要的模块
requests:在Flsak中由全局的request对象来提供信息。
属性:
1.request.method: 请求的方法
2.request.form: 返回form的内容
3.request.args: 返回请求中的参数
4.request.cookies: cookies信息
5.request.headers: 请求的headers信息,返回的结果是个列表
6.date,files: date是请求的数据,files是请求上传的文件

 1. 常见HTTP请求方法:
GET: 1). 获取信息 2). 提交的信息会展示在url: http://www.wewtos.org/login?user=westos&passwd=westos
POST:1). 提交信息, 不在url里面展示, 有利于数据的安全性;
HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获得表头
PUT:从客户端向服务器传送的数据取代指定的文档的内容
DELETE:请求服务器删除指定的页面
TRACE:回显服务器收到的请求,主要用于测试和诊断


2.默认路由接受的请求方法为__get__
        如何指定接收多个HTTP请求的方法?
        @app.route('/login/',methods=['GET','POST'] )
        视图函数:def   login( ):
3. 如何判断用户请求的HTTP方法?   request.method
 如何获取用户POST请求提交的表单数据? request.form['user']     
4.模板渲染(jinja2):

why?

    python中生成html不易修改与维护, 所以将html的内容独立到templates目录中;

how?

     1). 去当前项目目录下寻找templtes是否存在?再去判断templates目录下是否有login.html文件?
     2). 读取这个login.html文件的内容, 作为render_template的返回值;
     3). 最终返回给用户浏览器;
render_template('login.html')  

5.重定向和错误
redirect   是一个重定向函数,后面可以跟网址
例如:return    redirect('http://www.baidu.com')  页面就会跳转到百度页面
模板渲染:return  render_template('login.html', message="用户名或者密码错误")

代码如下
在这里插入图片描述
首先设置本地路由,链接到index.html页面
设置login路由
在这里插入图片描述
捕获异常,只要出现链接错误,就返回404.html页面内容
同时设置另一个路由

执行代码后,链接到本地路由出现的是index.htnl页面在浏览器中执行后的样子
在这里插入图片描述
输入别的网址都会弹出404报错
下面是404.html页面内容及报错弹出框
在这里插入图片描述
在这里插入图片描述
这里index.html继承了base.html的内容
base.html页面内容即为index.html显示的内容
在这里插入图片描述
同时在index.html页面我们设置了登陆选项如下
在这里插入图片描述
所以在index页面中点击登陆,就会跳转到/login/路由上
login.html页面内容如下
在这里插入图片描述
这里指定了当跳转到login路由时,选择的方法为’’ post ‘’,并显示登陆按钮和空格填写信息
该HTML页面在浏览器中执行并判断填写信息是否满足,当不满足时会被要求重新填写,并告诉错误,即代码中的返回login.html页面
在这里插入图片描述
当登陆成功则会返回index页面

后面有一个新的路由
/user/加整形数
如果符合要求返回如下
在这里插入图片描述
不符合会弹出错误框
在这里插入图片描述

3.判断是否登陆的装饰器与网页拓展
注意:此项目依赖于上个项目的所有文件
以下是代码
在这里插入图片描述
这里提前设置了一个字典 usersinfo,用来储存已经存在的用户及其密码,可直接登陆
这里也设置了一个装饰器,用来判断用户是否登陆
在这里插入图片描述
判断用户名和密码是否匹配,并且存储到session中
在这里插入图片描述
用户注销,当登陆进去后可以选择注销,切换另一用户;
其中session.pop( )用来移除session中的存储信息
并重定向返回index路由
在这里插入图片描述
用户注册,如果用户名已经存在,则提示用户存在并返回注册页面;否则向字典中添加新的用户名和密码,然后返回到登陆页面

实验结果如下
在base.html中构建桥梁,将路由和按钮连接起来
在这里插入图片描述
所以登陆成功后会显示用户名
在这里插入图片描述
此时已经登陆成功
而注册页面也登陆页面是差不多的,如图
在这里插入图片描述
在注册时,除了userinfo里已存在的westos用户,其他用户都可以注册

这里有必要说明,还有检查本机各项性能的代码
在这里插入图片描述
同样也是一个新的路由
而sysinfo.html页面内容如下
在这里插入图片描述
最终在浏览器中返回的结果如下
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42719822/article/details/83313398
今日推荐