Python 3.x 是否有一种方法可以对所有模板使用一个表单?
我一直在尝试使用flask在我的导航栏中创建这个搜索功能,它可以在我的站点的所有页面中使用 我需要将其添加到我的布局模板,该模板扩展到所有其他模板。是否有一种更简单的方法可以做到这一点,而不必通过每一条路线并将此表单添加到其中?现在它只是给了我一个错误,因为我的所有其他路线都无法识别表单 如果我不得不把这个特定的搜索表单添加到我的所有路线中,这看起来真的很乏味 我的导航栏搜索功能如下所示:Python 3.x 是否有一种方法可以对所有模板使用一个表单?,python-3.x,flask,Python 3.x,Flask,我一直在尝试使用flask在我的导航栏中创建这个搜索功能,它可以在我的站点的所有页面中使用 我需要将其添加到我的布局模板,该模板扩展到所有其他模板。是否有一种更简单的方法可以做到这一点,而不必通过每一条路线并将此表单添加到其中?现在它只是给了我一个错误,因为我的所有其他路线都无法识别表单 如果我不得不把这个特定的搜索表单添加到我的所有路线中,这看起来真的很乏味 我的导航栏搜索功能如下所示: <form method="POST" action="
<form method="POST" action="{{ url_for('main.searchresults', search=searchq) }}" enctype="multipart/form-data">
<div class="md-form active-cyan active-cyan-2">
<a class="md-form active-cyan active-cyan-2" type="text" placeholder="Search" aria-label="Search">{{ searchbar.search }}</a>
</div>
</form>
<a class="ml-2" href="{{ url_for('main.searchresults', search=searchq) }}">{{ searchbar.submit(class="btn btn-outline-primary") }}</a>
我可以通过在我的所有路线中添加我使用的烧瓶表单(定义为搜索栏)来解决这个问题,但我希望(并假设)有一种更简单的方法来实现这一点,因为它看起来非常低效。如果你在模板中使用jinja,你可以创建一个文件(例如
包含/_navbar.html
)用于导航栏,并将其包含在模板中
{% include 'includes/_navbar.html' %}
您通常有一些“基本”HTML文件,所有其他文件都从中继承/包含。例如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My website</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>
<body>
{% include 'includes/_navbar.html' %}
<div class="container">
{% block body %}{% endblock %}
</div>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>
我的网站
{%include'包含/_navbar.html%}
{%block body%}{%endblock%}
然后,对于所有模板,扩展此基础模板。比如说
{% extends 'base.html' %}
{% block body %}
<div class="jumbotron text-center">
<img src="../static/logo.png" alt="Logo" width="160" height="120">
{% if session.get('logged_in') %}
<h1>Welcome {{ session.user.username }}!</h1>
{% else %}
<h1>Welcome to My website!</h1>
{% endif %}
</div>
{% endblock %}
{%extends'base.html%}
{%block body%}
{%if session.get('logged_in')%}
欢迎{{session.user.username}}!
{%else%}
欢迎来到我的网站!
{%endif%}
{%endblock%}
那么includes/\u navbar.html的内容本身就是navbar吗?我有一个基本的html页面,但我会尝试将导航栏从中分离出来并使用include@il5amees是的,应该是它自己。我有一个示例程序,是该项目中的导航栏。都是模板。您的示例确实有意义,但是我在导航栏中使用了{{form.}},所以当您导出或使用include时,会出现错误jinja2.exceptions.UndefinedError:“searchbar”未定义。对不起,我应该说清楚我想做什么。我会马上编辑我的帖子。@il5amees哦,对了,我想我读你的问题有点太匆忙了。因此,您的问题是,您不想转到所有路由(在python文件中)并添加参数form
?不幸的是,你不得不这么做,但是可以用函数来包装它。我明白了,无论如何,谢谢。从中了解了“包含”功能。希望有一种方法可以做到这一点,稍后有人可以指出。