python web开发(二):HTML标签语言

news2024/11/29 0:44:45

文章目录

  • 简介
  • 标签语法
      • 标题
      • div和span
      • 超链接
      • 插入图片
      • 列表
      • 表格
      • Input系列
      • 提交表单
  • 参考

简介

如下展示了一段简单的HTML模板, <head></head>标签中主要包含一些基本配置,如编码方式,标题等,注意标题的作用如下图所示
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
    <div>hello word</div>
</body>
</html>

标签语法

标题

每个标题单独占一行

<body>
    <h1>一级标题</h1>
    <h2>二级标题</h1>
    <h3>三级标题</h1>
    <h4>四级标题</h1>
    <h5>五级标题</h1>
</body>

div和span

<div>内容</div>

<span>内容</span>

div和span标签不会像标题h一样对字体大小进行改变,只展示最原始的文字,其两者的区别如下

  • div: 占一整行(块级标签)
  • span: 用多少占多少(行内标签/内联标签)
    两个 span 标签不在同一行,页面显示时会在同一行,中间以一个空格分隔
    两个 span 标签在同一行,页面显示时会在同一行,中间没有空格,连着

超链接

如下代码所示,使用<a></a>标签来应用超链接,a标签中间的文字是超链接文字,href参数存放url地址,下面的代码段中展示了引用外部链接,以及引用内部链接两种方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
    <div>hello word</div>
    <a href="https://mp.csdn.net/mp_blog/manage/article?spm=1011.2124.3001.5298">小方的博客链接</a></br>
    <a href="/master">内部链接</a>
</body>
</html>
from flask import Flask, render_template
app = Flask(__name__, template_folder="./templates")

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/master")
def master():
    return "byebye"

if __name__ == "__main__":
    app.run()

结果如下图所示
在这里插入图片描述
在新的 Tab 标签页打开链接,添加 target=“_blank”

<body>
    <a href="https://www.mi.com/shop/buy/detail?product_id=16642" target="_blank">
        <img src="https://cdn.cnbj1.fds.api.mi-img.com/nr-pub/202210262033_ef39fca0e37395d07682124770fd3ad9.png" style="width: 150px;"/>
    </a>
</body>

插入图片

语法如下<img src=image_url style="width:50px; height:20px"> 即通过style设置图片大小,此处指定了宽和高,若只指定宽或高,则按比例放大缩小,此外style里可以直接填百分比,表示放大缩小,如style=“50%”

如果要插入本地图片,需要在当前项目下创建static文件夹,并将离线图片存放在static文件夹中
在这里插入图片描述
我们得到如下效果
在这里插入图片描述
标签嵌套:点击图片跳转到对应的网站

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
    <div>
        <a href="https://consumer.huawei.com/cn/phones/" target="_blank">
            <img src="/static/img.png" style="width: 200px; height: 200px">
        </a>
    </div>
</body>
</html>

列表

无序列表

<body>
<ul>
  <li>中国移动</li>
  <li>中国联通</li>
  <li>中国铁塔</li>
  <li>中国电信</li>
</ul>
<body>

有序列表

<body>
<ol>
  <li>中国移动</li>
  <li>中国联通</li>
  <li>中国铁塔</li>
  <li>中国电信</li>
</ol>
</body>

效果如下
在这里插入图片描述

表格

<body>
  <h1>表格</h1>
  <table border="1">
    <thead>
      <tr> <th>id</th> <th>name</th> <th>age</th> </tr>
    </thead>
    <tbody>
      <tr> <td>01</td> <td>xiaofang</td> <td>18</td> </tr>
      <tr> <td>02</td> <td>xiaoming</td> <td>19</td> </tr>
      <tr> <td>03</td> <td>xiaohua</td> <td>20</td> </tr>
    </tbody>
  </table>
</body>

表格以<table>开头,中间包括表头<thead>和表主体<tbody><tr>代表一行,在表头中一列用<th>表示,在主体部分一列用<td>表示,上述代码结果如下, border=1使得表格有线条(无该参数时只显示文字,没有线条分割)
在这里插入图片描述

Input系列

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h2>文本和密码</h2>
  <!-- 文本与密码 -->
  <input type="text" />
  <input type="password" />

  <!-- 选择文件 -->
<h2>选择文件</h2>>
  <input type="file" />

  <!-- 单选框 -->
<h2>单选</h2>
  <input type="radio" name="n1" /><input type="radio" name="n1" /><!-- 复选框 -->
<h2>多选</h2>
  <input type="checkbox" /><input type="checkbox" /><input type="checkbox" />Rap
  <input type="checkbox" />篮球

  <!-- 按钮 -->
<h2>按钮:普通按钮和提交表单</h2>
  <input type="button" value="提交"/>	普通按钮
  <input type="submit" value="提交"/>	提交表单

<h4>下拉框</h4>
<select>
	<option>北京</option>
	<option>上海</option>
	<option>深圳</option>
</select>

<h4>多行文本</h4>
<textarea rows="3"></textarea>

</body>
</html>

在多行文本中通过参数rows指定文本行数,如果文本rows没有指定,会根据输入内容自动调整框的大小
在这里插入图片描述
在这里插入图片描述

提交表单

  • GET 方法与 POST 方法的区别
    GET: 可通过URL/表单提交
    POST: 只能通过表单提交,提交数据不在URL而是在请求体中

  • 表单可以提交的前提条件:
    提交方式: method=get or post
    提交地址: action=“/xxx/xxx/xxx”
    form标签里面必须有一个submit标签
    每个标签有name属性

如下所示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
</head>
<body>
    <!--method时传参方式;action表示提交参数后执行的网址-->
    <form method="post" action="/do/post/regist">
        <h4>用户注册</h4>
        <div>
            用户名: <input type="text" name="username" />
        </div>

        <div>
            <!-- 此处必须加入name参数,作为返回参数的key-->
            密码: <input type="password" name="passwd" />
        </div>

        <div>
            <!-- 单选:两行都使用相同的name使得两个选择互斥;由于此处时选择设置value数值作为返回数值,如1代表男-->
            性别:
            <input type="radio" name="gender" value="1"><input type="radio" name="gender" value="2"></div>

        <div>
            <!--多选-->
            爱好:
            <input type="checkbox" name="hobby" value="1">篮球
            <input type="checkbox" name="hobby" value="2">羽毛球
            <input type="checkbox" name="hobby" value="3">排球
        </div>

        <div>
            <!--下拉单选-->
            城市:
            <select name="city">
                <option value="bj">北京</option>
                <option value="sh">上海</option>
                <option value="hz">杭州</option>
            </select>
        </div>

        <div>
            自我评价:
            <textarea name="slef review"></textarea>
        </div>
        <div>
        <!--submit作为提交表单;button是普通的按钮-->
        <input type="submit" value="submit提交">
        </div>

        <div>
            <input type="button" value="button提交">
        </div>
    </form>

</body>
</html>

后端程序中通过request.argsrequest.form获取前端传递过来的信息

from flask import Flask, render_template, request

app = Flask(__name__, template_folder="./templates")

@app.route("/regist", methods=["GET"])
def regist():
    return render_template("regist.html")


@app.route("/do/get/regist", methods=["GET"])
def do_get_regist():
    # GET方式提交信息获取
    submit_info = request.args
    print(submit_info)
    # POST方式提交信息获取
    # submit_info = request.form
    return str(submit_info)


@app.route("/do/post/regist", methods=["POST"])
def do_post_regist():
    # POST方式提交信息获取
    submit_info = request.form
    return str(submit_info)

if __name__ == "__main__":
    app.run(port=5001)

效果如下
在这里插入图片描述
返回参数如下
在这里插入图片描述

  • 需要返回信息内容时,个标签都需设置name属性
  • 对于上面的性别、爱好、城市的标签,由于没有输入内容,需要设定value属性,对应选择对应的值
  • 对于表单,也可通过如下方式获取指定属性的值
@app.route("/do/post/regist", methods=["POST"])
def do_post_regist():
    # POST方式提交信息获取
    # submit_info = request.form
    # 也可获取单一的值
    usrname = request.form.get("username")
    pwd = request.form.get("passwd")
    # 多选的情况
    hobby_list = request.form.getlist("hobby")
    return str(usrname)
  • 在后端可以将POST和GET请求方式合并,如下所示

# 指定即可接收GET也可接收POST请求
@app.route("/regist", methods=["GET", "POST"])
def regist():
    if request.method == "GET":
        submit_info = request.args
        return str(submit_info)
    else:
        usrname = request.form.get("username")
        pwd = request.form.get("passwd")
        return str(usrname)
  • 此处仅介绍了非常常用的标签,能覆盖开发需要的90%,其余的可在具体开发中查手册

参考

Django web开发(一) - 前端
最新Python的web开发全家桶(django+前端+数据库)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/512647.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【java BUG收集-持续更~】

JAVA BUG JAVA BUGliquibase.lockservice锁异常1、启动参数增加jvm参数 -Dliquibase.lockservicefalse2、修改或清空 包含有 DATABASECHANGELOGLOCK的表 JAVA BUG 该章收集工作中遇到的java bug,作为工作日志&#xff0c;方便回顾。 liquibase.lockservice锁异常 报错信息&a…

Spring Boot实用技巧之单元测试

文章目录 一、单元测试的概念二、单元测试的优势三、Spring Boot实现单元测试&#xff08;一&#xff09;添加依赖&#xff08;二&#xff09;生成单元测试的类&#xff08;三&#xff09; 添加注解和业务代码1. 添加 SpringBootTest 注解2. 添加单元测试的业务代码3. 执行测试…

MySQL部分常用函数总结

数值计算函数 使用方法&#xff1a; ABS&#xff08;x&#xff09; date函数 获取date中对应部分&#xff1a; YEAR(date) 字符串函数 用法举例&#xff1a; 左侧截取字符 SELECT LEFT(‘MySQL’,2); 按符号拆分字符&#xff0c;返回拆分后的部分 SUBSTRING_INDEX(profile,“…

创新洞察 |与众不同的DTC模式:2023年发展趋势将如何影响零售业增长策略?

DTC零售不再局限于数字原生品牌。传统零售商也在采用相同的策略&#xff0c;特别是在后疫情世界中竞争时。预计DTC销售将继续增长&#xff0c;因为更多品牌转向电子商务领域&#xff0c;而已建立的DTC参与者也在扩大其现有市场。预计仅在美国&#xff0c;数字原生品牌将在2023年…

多分类的ROC曲线绘制思路

目录 一、什么是ROC曲线 二、AUC面积 三、代码示例 1、二分类问题 2、多分类问题 一、什么是ROC曲线 我们通常说的ROC曲线的中文全称叫做接收者操作特征曲线&#xff08;receiver operating characteristic curve&#xff09;&#xff0c;也被称为感受性曲线。 该曲线有两…

第四节 Linux 特殊权限SUID、SGID、SBIT

目录 1.Set UID 简称 SUID 2.Set GID 简称 SGID 3.Sticky Bit 简称 SBIT 1.Set UID 简称 SUID 简称 SUID 限制与功能&#xff1a; SUID权限仅对二进制程序有效&#xff1b; 执行者对于该程序需要具有x的执行权限&#xff1b; 本权限仅在执行该程序的过程中有效&#xff1…

Softmax简介

Softmax是一种数学函数&#xff0c;通常用于将一组任意实数转换为表示概率分布的实数。其本质上是一种归一化函数&#xff0c;可以将一组任意的实数值转化为在[0, 1]之间的概率值&#xff0c;因为softmax将它们转换为0到1之间的值&#xff0c;所以它们可以被解释为概率。如果其…

VSCode +gdb+gdbserver远程调试arm开发板

一、下载编译器 从ARM官网下载gcc-arm编译器&#xff0c;编译器中自带gdb和gdbserver&#xff0c;可以省去自己编译。 注&#xff1a;gdb是电脑端程序&#xff0c;gdbserver是arm开发板程序 arm官网链接&#xff1a;https://developer.arm.com/downloads/-/arm-gnu-toolchain-d…

速卖通、Lazada、美客多、亚马逊新品流量如何利用测评快速提升?

熟悉亚马逊的卖家应该清楚&#xff0c;亚马逊对于新发布的产品会有一定的流量倾向&#xff0c;特别是产品刚上架的2-4周&#xff0c;你的产品将在搜索结果中显示更多&#xff0c;排名比通常情况下更快。 第一步&#xff1a;优化好自己的产品listing1.新品上架标题要点标题权重…

SLM27524一款能够有效驱动MOSFET和IGBT电源开关双通道低侧栅极驱动器

深力科电子为“数据中心服务器电源”推荐一款双通道大非反相低侧栅极驱动器 SLM27524&#xff0c;该产品能够有效驱动MOSFET和IGBT电源开关。SLM27524采用一种能够从内部极大地降低击穿电流的设计&#xff0c;将高峰值的源电流和灌电流脉冲提供给电容负载&#xff0c;从而实现了…

NDK OpenGL离屏渲染与工程代码整合

NDK​系列之OpenGL离屏渲染与工程代码整合&#xff0c;本节主要是对上一节OpenGL渲染画面效果代码进行封装设计&#xff0c;将各种特效代码进行分离解耦&#xff0c;便于后期增加其他特效。 实现效果&#xff1a; 实现逻辑&#xff1a; 1.封装BaseFilter过滤器基类&#xff0c…

C++ 多线程编程(四) 原子类型atomic

C 11增加了原子类型atomic类&#xff0c;在一定条件下可以实现无锁编程。 1. 简介 atomic是一个模板类&#xff0c;定义如下&#xff1a; template< class T > struct atomic; atomic可以实现无锁编程&#xff0c;在效率上要比mutex高很多&#xff0c;直接看个直观的…

有道云笔记常用快捷键

F5 同步/刷新 Shift AltD 插入当前时间&#xff1a; CTRL B 加粗 CTRL I 斜体字 CTRL U 下划线 CTRL E 删除线 CTRL D 任务框 CTRL 1 变成标题1 CTRL 2 变成标题2 CTRL 3 变成标题3 CTRL 4 变成标题4 CTRL G 高亮块 CTRL H 加水平线 当前行成无序列表&a…

npm安装依赖实践总结

node下载地址&#xff1a;https://nodejs.org/en/download/releases 。可以看到node版本、npm版本、node_module版本。 【1】npm的全局安装路径 查看默认值&#xff1a; npm get prefix默认是C:\Users\你的用户名\AppData\Roaming\npm 可以通过 npm config prefix 更改全局…

为什么PCB设计完成后需要放置mark点

PCB设计中的Mark点是指一些标记点&#xff0c;通常用于促进PCB制造和组装过程中的准确性和一致性。这些标记点在制造过程中可以帮助操作员进行自动化定位&#xff0c;从而确保所有部件都被正确组装到其正确位置&#xff0c;这对于确保产品的质量和可靠性至关重要。 下面&#…

springboot抵御即跨站脚本(XSS)攻击

抵御即跨站脚本(XSS)攻击 XSS攻击通常指的是通过利用网站系统保存系统的漏洞&#xff0c;通过巧妙的方法把恶意指令注入到网页&#xff0c;用户加载网页的时候会自动执行恶意脚本 比如&#xff1a; <script>alert(xss); </script> 如果客户能在你的浏览器执行j…

C# Setting.settings . 配置用法

1、定义 在Settings.settings文件中定义配置字段。把作用范围定义为&#xff1a;User则运行时可更改(用户范围的字段数据更改存储在用户信息中&#xff0c;不在该程序文件中)&#xff0c;Applicatiion则运行时不可更改。可以使用数据网格视图(VS软件的Properties 下面的Settin…

几何深度学习 - 利用几何先验知识的深度学习

深度学习很难。 虽然通用逼近定理表明足够复杂的神经网络原则上可以逼近“任何东西”&#xff0c;但不能保证我们可以找到好的模型。 尽管如此&#xff0c;通过明智地选择模型架构&#xff0c;深度学习取得了巨大进步。 这些模型架构对归纳偏差进行编码&#xff0c;为模型提供…

makefile 条件判断语句

文章目录 前言一、条件判断语句的语法说明二、ifeq / ifneq三、ifdef / ifndef代码讲解&#xff1a; 四、经典示例总结 前言 一、条件判断语句的语法说明 makefile 中支持条件判断语句。 可以根据条件的值决定 make 的执行。可以 比较 两个不同变量或者变量和常量值。 条件判…

物理环境与网络通信安全

物理环境与网络通信安全 物理和环境安全环境安全设施安全-安全区域与边界防护传输安全 OSI七层模型ISO/OSI七层模型结构OSI模型特点OSI安全体系结构 TCP/IP协议安全TCP/IP协议结构网络接口层网络互联层核心协议-IP协议传输层协议-TCP&#xff08;传输控制协议&#xff09;传输层…