【问题标题】:Python/Mako: Script Tag not showing up from Sub Template when Loaded into Main Template via Ajax CallPython/Mako:通过 Ajax 调用加载到主模板时,脚本标签未从子模板中显示
【发布时间】:2023-04-06 05:43:02
【问题描述】:

我基本上有一个 3 级模板。
我想将子模板中的脚本标签动态加载到主模板中。

模板设置:

  • 包含所有标题/脚本的基本页面
  • 包含新脚本标签并加载小部件的二级模板
  • 包含小部件的第三级模板

我要做的就是在加载第 3 级模板时加载特定的 javascript 文件,因此我的基本模板上没有大量填充的 head 标签,其中包含可能无法使用的 javascript 文件。

基础模板(在 head 标签中):

<script type="text/javascript" src="/assets/scripts/jquery-1.9.1.js"></script>
${next.javascriptIncludes()}
<script type="text/javascript" src="/assets/scripts/modules/baseModule.js"></script>

第二个模板(脚本标签在哪里)

##conditional to determine if the template should inherit from the base page
##it shouldn't inherit from the base page if it is being inserted into the page using ajax
<%!
def inherit(context):
    if context.get('isPage'):
        return "base_dashboard.mak"
    else:
        return None
%>
<%inherit file="${inherit(context)}"/>

<%def name="javascriptIncludes()">
    <script type="text/javascript" src="/assets/scripts/libs/jquery.maskedinput-1.3.1.min.js"></script>
</%def>

## AJAX load
%if isPage is False:
    blah blah blah shows up
    <script>s</script>
    <h1>H1 shows up</h1>
    <p style="color:red;">P tag shows up in red</p>
    <link rel="stylesheet" href="/assets/css/main.css" type="text/css"><- This shows up
    <div><script type="text/javascript" src="/assets/scripts/libs/jquery.maskedinput-1.3.1.min.js"></script></div>
    Script tag above is missing...
%endif

<div id="dashboard-profile-container">
<%include file="widgets/profile_widget.mak" />
</div>

第三个模板(小部件)

Just HTML

问题:脚本标签未包含在基本模板的标题中

你会如何处理这个问题?

【问题讨论】:

  • 在这种情况下,“下一步”是什么?它确实是一个内置的 python 函数,你应该避免名称冲突。不能用别的名字吗?
  • 你说得对,我没有继承任何东西,所以不需要使用 NEXT... 用新信息更新问题

标签:
python
ajax
include
pyramid
mako