如何在Beego的模板文件中停止编码url?

时间:2016-12-15 01:24:09

标签: templates go encoding ampersand beego

我在Beego处理模板和网址编码时遇到了麻烦。

(Beego是Go lang的模板引擎之一)

如何在Beego的模板文件中停止HTML TAG中的网址编码?

请告诉我。

-

logcontroller.go

package controllers

import (
    "mycode/models"
)

type FiletranslogController struct {
    baseController
}

func (this *FiletranslogController) Get() {
    // Already encoded url
    this.Data["querystring"] = "/filetranslog/getlogs?sdate=2016-11-13%2000%3A00&edate=2016-12-13%2023%3A59&md5=&trans_type=2"

    this.TplName = "log/filetrans.html"
}

filetrans.html

<!-- Not in TABLE TAG -->
{{str2html .querystring}}

<!-- In TABLE TAG -->
<table  id="table-log"
        data-url="{{str2html .querystring}}"
        data-toggle="table"
        data-toolbar="#toolbar-log"
        data-search="true"
        data-show-refresh="true"
        data-pagination="true"
        data-side-pagination="server"
        >
    <thead>
    <tr>
        <th data-field="rdate">Date</th>
        <th data-field="mail_sender">Mail Sender</th>
        <th data-field="trans_type">Trans Type</th>
        <th data-field="md5">MD5</th>
    </tr>
    </thead>
</table>
<script>

在Web浏览器上查看源代码

<!-- Not in TABLE TAG -->
/filetranslog/getlogs?sdate=2016-11-13%2000%3A00&edate=2016-12-13%2023%3A59&md5=&trans_type=2

<!-- In TABLE TAG -->
<table  id="table-log"
        data-url="/filetranslog/getlogs?sdate=2016-11-13%2000%3A00&amp;edate=2016-12-13%2023%3A59&amp;md5=&amp;trans_type=2"
        data-toggle="table"
        data-toolbar="#toolbar-log"
        data-search="true"
        data-show-refresh="true"
        data-pagination="true"
        data-side-pagination="server"
        >
    <thead>
    <tr>
        <th data-field="rdate">Date</th>
        <th data-field="mail_sender">Mail Sender</th>
        <th data-field="trans_type">Trans Type</th>
        <th data-field="md5">MD5</th>
    </tr>
    </thead>
</table>
<script>

OMG

/filetranslog/getlogs?sdate=2016-11-13%2000%3A00&edate=2016-12-13%2023%3A59&md5=&trans_type=2
---> changed to 
/filetranslog/getlogs?sdate=2016-11-13%2000%3A00&amp;edate=2016-12-13%2023%3A59&amp;md5=&amp;trans_type=2

* ex)PHP Smarty模板引擎支持{literal} bla..bla..never encoded {/ literal}标记。 *

2 个答案:

答案 0 :(得分:0)

  • str2html 将字符串解析为HTML,没有转义。 {{str2html .Strhtml}}

https://beego.me/docs/mvc/view/template.md

答案 1 :(得分:0)

第二次测试结果。

template_file.html

{{str2html .querystring}}
<table  data-url="{{.querystring}}"
        data-url='{{.querystring}}'
        data-url="{{str2html .querystring}}"
        data-url='{{str2html .querystring}}'
        >
    <thead>
    <tr>
        <th data-field="rdate">Date</th>
        <th data-field="mail_sender">Mail Sender</th>
        <th data-field="trans_type">Trans Type</th>
        <th data-field="md5">MD5</th>
    </tr>
    </thead>
</table>

在Web浏览器上查看源

/filetranslog/getlogs?sdate=2016-11-13%2000%3A00&edate=2016-12-13%2023%3A59&md5=&trans_type=2
<table  data-url="/filetranslog/getlogs?sdate=2016-11-13%2000%3A00&amp;edate=2016-12-13%2023%3A59&amp;md5=&amp;trans_type=2"
        data-url='/filetranslog/getlogs?sdate=2016-11-13%2000%3A00&amp;edate=2016-12-13%2023%3A59&amp;md5=&amp;trans_type=2'
        data-url="/filetranslog/getlogs?sdate=2016-11-13%2000%3A00&amp;edate=2016-12-13%2023%3A59&amp;md5=&amp;trans_type=2"
        data-url='/filetranslog/getlogs?sdate=2016-11-13%2000%3A00&amp;edate=2016-12-13%2023%3A59&amp;md5=&amp;trans_type=2'

        >
    <thead>
    <tr>
        <th data-field="rdate">Date</th>
        <th data-field="mail_sender">Mail Sender</th>
        <th data-field="trans_type">Trans Type</th>
        <th data-field="md5">MD5</th>
    </tr>
    </thead>
</table>

为什么文字字符串编码?我使用“beego.ParseForm”函数进行表单解析,但是,双重编码的url不能被“beego.ParseForm”正确解析。