如何避免Django为链接后的所有HTML元素自动添加URL链接
问题原因与解决方案
你的问题根源是HTML的<a>标签语法错误,和Django模板逻辑、block划分没有任何关系。
具体错误点
- HTML规范中
<a>标签不属于自闭合标签,你使用的<a href="{% url 'site' %}"/>自闭合写法是无效的,浏览器会默认判定该<a>标签未正常闭合,自动将按钮之后的所有DOM元素都包裹在这个未闭合的<a>标签内部,因此后续所有内容都会被识别为超链接。 - 额外规范提示:把
<a>标签嵌套在<button>内部的写法不符合HTML标准,部分浏览器可能出现点击事件冲突,更推荐直接给<a>标签添加CSS样式伪装成按钮,或给按钮绑定点击跳转事件。
修正后的代码示例
<body> <h2>foo</h2> {% block content %} <!-- 推荐写法:给a标签加样式模拟按钮,无需嵌套button --> <a href="{% url 'site' %}" class="custom-btn">Click</a> <!-- 若要保留button写法,正确闭合a标签即可 --> <button><a href="{% url 'site' %}">Click</a></button> {% endblock %} <p>bar</p> </body>
内容的提问来源于stack exchange,提问作者toenne
相关产品推荐
相关产品推荐

