Python之模板继承 and http综合

本文深入探讨了模板继承的语法和操作,包括如何继承、替换模板内容,以及如何使用super()方法。同时,详细解释了HTTP请求方法GET、POST等的区别与应用场景,以及在Flask框架中如何处理这些请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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页面内容如下
在这里插入图片描述
最终在浏览器中返回的结果如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值