python - 我在 Flask 中有部分 View /代码隐藏吗?

标签 python flask

我正在从 C#.NET 迁移到 Python/Flask。

在 .NET 中,我有 MasterPage、UserControl、PartialView,每个都有自己的代码。

例如我可以将检查登录函数保存在 Login.ascx.cs 中,并在任何我想要的地方呈现 Login.ascx。如果已登录,则显示欢迎消息,否则显示登录表单。

但是在 Flask 中我只找到了包含静态 html 文件的 {% include 'login.html' %}

我如何在 Flask 中实现这个设计?

我现在可能有答案了:

我没有使用 g.user,这就是我来这里寻求帮助的原因。其他人建议使用 @app.context_processor。我正在尝试,这似乎是我想要的。与g类似的全局可访问设计。

最佳答案

尽管它的名字可能会让您认为它确实如此 include不插入静态 HTML 文件的内容。它实际上插入了 呈现 Jinja 模板的内容,它的功能非常类似于 MVC 的部分 View (如果我理解正确的话)。它has access to the parent template context默认情况下。因此,例如,如果您将用户存储在 g.user 上,因为默认情况下可以访问 g,您可以简单地执行以下操作:

<-- login.html -->
{% if g.user.is_anonymous() %}
Login form goes here
{% else %}
Greetings {{g.user.full_name}}!
{% endif %}

并且 {% include "login.html"%} 您希望登录表单/用户问候显示的任何地方。

对编辑的回应

如果你想确保所有模板都可以访问user,你确实可以使用context_processor添加一个用户:

@app.context_processor
def add_user():
    # Get user
    return {"user": user}

关于python - 我在 Flask 中有部分 View /代码隐藏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12152424/

相关文章:

python - 社区包中的错误?

Python WhiteNoise 在 Flask 应用程序中不是 gzip 压缩

python - 常数数组大小的时间复杂度

python - 如何将词典列表输出到 Excel 工作表?

Python 等同于 C# 的 using 语句

r - 多线程 Flask 应用程序导致 rpy2 R 进程中出现堆栈错误

python - Flask 和 Flask_login - 组织代码

python - 在 Flask 中使用 pymysql 时出错

python - 在没有模板的情况下对 POST 进行 Flask 适当响应?

python - 如何使用装饰器将函数绑定(bind)到对象实例?