把商品资料整理成详情页说明时,一句“尺寸 < 10”或包含与号的名称,不应该被网页当成HTML结构。若直接把资料字符串拼进标签,原本要显示的文字可能被解释为标记。图片已经做好,并不表示旁边的文字也能原样、安全地进入页面;这一步需要按输出位置处理字符,而不是再让作图模型重写商品名。
本篇只做一个很窄的本地函数:把普通字符串放进HTML正文的文本位置。Python标准库的html.escape会转换与号、小于号、大于号,并在默认参数下处理引号[1]。它不是通用的网页安全清洗器,也不负责验证图片、价格或商品事实。先把适用位置说清,才能知道这段代码解决了什么、没有解决什么。
先限定为纯文本
函数接收已经确认的商品名称,返回一个段落片段。这里不允许输入本来就要执行的HTML,也不处理脚本、样式、网址或事件属性。不同上下文有不同要求,把这段函数搬去生成任意链接或JavaScript,并不能据此认定处理适用。保留原始资料,转义只在输出边界进行,避免下一环节不知道字符串是否已经处理过。
from html import escape def product_paragraph(name): if not isinstance(name, str): raise TypeError("name must be str") return "<p>" + escape(name, quote=True) + "</p>"可以用完全合成的名字检查结果,不涉及真实商品或客户资料。例如输入A&B后,源码应含A&B;输入<em>样品</em>时,文本应被转义,而不是产生强调标签。测试对象是生成片段的字符契约,没有替任何商家完成平台发布。代码在本次Python环境实际执行过相应成功与失败路径,核对记录保留在制作材料中。
HTML文本位置中的小于号需按适当规则转义为实体;示例不覆盖所有输出上下文。(AI生成示意图)
看到实体不是商品名被改了
转义后的源码与读者看到的文字不是同一层。源码用&表达与号,浏览器文本显示仍应是与号;因此不能把实体形式写回商品数据库,作为新的商品名称。也不要因为源码多了字符,就误认为规格被修改。需要比较的是最终可见文字与原始资料,必要时再检查页面结构是否符合预期。
重复处理也会带来问题。一个已经转义的字符串再次经过escape,原本的实体可能再次被处理,让页面出现字面量实体文本。解决办法是保留清楚的数据边界:资料层存普通文本,输出HTML时统一转义,不靠猜字符串里有没有“&”来判断它是否安全。随意反转义再拼接同样可能重新引入标记。
Picset电商套图页可以通过产品图和详情图要求组织视觉候选[2]。这与本地将已确认文案写入HTML是相邻的制作工作,但公开页没有证明它提供本篇函数或任意HTML导出能力。图像里的包装字仍需对照可靠材料,网页里的文本则按自己的输出上下文处理;两者不能互相替代验收。
实际接入模板时,先确认模板引擎是否已经自动转义。若已有保护,盲目叠加手工处理可能造成重复显示;若没有,则应在明确的文本插槽统一处理。不要为了让某个样式生效,就把所有资料设为可信HTML。需要富文本时,应另行定义允许的结构和处理策略,而不是取消纯文本边界。
对异常输入,函数选择报错,不把列表或空对象自动变成看似正常的商品文案。空字符串在这个小例子中会形成空段落,是否允许空名称,应由资料校验另行决定。这种分工让错误有明确位置:类型不对是调用契约,名称缺失是业务资料,文字与实物不符则需要事实核验。
上线前还应在实际页面查看尖括号、与号、引号和中文是否保持原意,代码块中的实体展示也需另行检查。这个函数不建立完整页面,不执行网络请求,也不承诺防住所有脚本问题。它提供的是一个可验证的小边界:普通商品名进入正文时,保持文字身份,避免被意外当成页面指令。
参考资料
- Python 3.12:html.escape
- Picset详情图要求