当前位置: 首页 > 面试题库 >

如何动态选择烧瓶中要使用的模板目录?

严景焕
2023-03-14
问题内容

默认情况下,flask使用存储在“ template”目录中的模板文件:

/flaskapp
    /application.py
    /templates
        /hello.html

有什么方法可以根据登录用户动态选择模板目录?这就是我想要的目录结构:

/flaskapp
    /application.py
    /templates (default template goes here)
        /hello.html
    /userdata
        /user1
            /template1
                 hello.html
            /template2
                 hello.html
        /user2
            /template1
                 hello.html
            /template2
                 hello.html

现在,如果我具有登录用户的用户名和用户激活的模板的名称,是否可以动态选择要加载模板文件的目录?例如,

/userdata/<username>/<activated template name>/

而不是固定的

/templates/

我要实现的目标是为我的Web应用程序提供一个类似wordpress的主题系统,用户可以在其中上传/选择其网站的主题。


问题答案:

也有可能覆盖Jinja加载程序并设置Jinja将在其中寻找模板的路径。喜欢:

my_loader = jinja2.ChoiceLoader([
        app.jinja_loader,
        jinja2.FileSystemLoader(['/flaskapp/userdata', 
                                 '/flaskapp/templates']),
    ])
app.jinja_loader = my_loader

目录按照Jinja首先需要查找的顺序进行排列。然后,从视图中可以渲染用户特定的模板,如下所示:

render_template('%s/template1/hello.html' % username)

您可以在视图中动态更改用户名的位置。当然,您也可以在那里选择要渲染的模板(1或2)。但是基本上,您真正想念的是带有自定义路径的自定义Jinja加载程序。

希望能帮助或提出想法:)



 类似资料:
  • 问题内容: 默认情况下,flask使用存储在“ template”目录中的模板文件: 有什么方法可以根据登录用户动态选择模板目录?这就是我想要的目录结构: 现在,如果我具有登录用户的用户名和用户激活的模板的名称,是否可以动态选择要加载模板文件的目录?例如, 而不是固定的 我要实现的目标是为我的Web应用程序提供一个类似wordpress的主题系统,用户可以在其中上传/选择其网站的主题。 问题答案:

  • 我想创建一个模板随机数生成器类,它可以是整数类型,也可以是浮点类型。为什么?对于赋值,我编写了一个累积函数(本质上与std::acculate相同),我想制作一个可以是任意整数或浮点类型的测试工具(例如,无符号| short | long | long long int、float、double)。我们一直在研究模板,我试图通过使用模板编程来做出动态编译时决策。我可能用了错误的方法来处理这个问题-

  • 我有困难在提交时在烧瓶应用程序的WTForm页面中获取当前选择的项目。提交时,form.tableselector.data值始终等于1,无论选择了SseltField中的哪个项目(并且所有选项都具有表单(1,'table_name')1-10中的唯一表id,其中1是整数。 以下是当前代码: 意见。派克 form.py 桌面视图。html 我注意到,在调试表单时,wtf元对象csrf属性等于Tru

  • 我在这里遵循烧瓶教程: http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world 我达到了我尝试的程度/跑py和我得到: 这看起来类似于: ImportError:没有名为flask的模块 但他们的解决方案没有帮助。作为参考,我确实有一个名为flask的文件夹,其中一位用户提到该文件夹可能会导致问题

  • 问题内容: 我试图用一个烧瓶形式的sqlalchemy请求的结果填充选择字段。 这是代码: 这是模板: 查看: 模型(仅粘贴了关联表和作者表,很多列都不用了) 我目前收到此错误: 我真正想要的是,选择字段显示作者姓名及其编号,然后将作者编号返回至应用程序(返回至位于头的名为“ add_author”的函数)。 谢谢。 问题答案: 您有两个问题: 正如肖恩·维埃拉(Sean Vieira)在回答中指

  • 问题内容: 我是Flask的新手,我无法从我的select标签获取值。我试过返回错误请求。但是,当我尝试使用时,返回页将返回一个空白列表“ []”。 我的html: 我的app.py: 抱歉,如果我的帖子格式关闭(这也是Stack Overflow的新功能)。 问题答案: 从您提供的内容中很难确定,但是我相信您需要添加您的元素。 从烧瓶文档中找到对象: 要访问表单数据(在POST或PUT请求中传输