Golang URL-адрес gorm - PullRequest
       7

Golang URL-адрес gorm

1 голос
/ 10 февраля 2020

У меня проблема с отображением URL из базы данных в моем шаблоне. У меня есть структура:

type Tag struct {
    gorm.Model
    URL:       string
    userID:    uint
}

когда я выбираю все теги и пытаюсь отобразить его

{{range $element := .}}
{{$element.URL}}
{{end}}

Я получаю экранированный URL. Я вижу, прежде чем был доступен | Эскейп, но этого больше не существует. Я пытаюсь также с пользовательской функцией вернуть template.URL, но все еще не работает.

Это моя попытка:

"unscape" : func(s string) template.URL {
    return template.URL(fmt.Sprint(s))
}

Ответы [ 2 ]

0 голосов
/ 11 февраля 2020

Я не знаю почему, но я должен сохранить его в переменной, чтобы он был правильным. Я исправляю это следующим образом.

                "safe": func(s string) template.URL {
                   fixedurl := template.URL(s)
                   return  fixedurl
                },
0 голосов
/ 11 февраля 2020

Необходимо сообщить шаблонизатору, что URL-адрес безопасен.

Для достижения этого необходимо вернуть template.HTML или template.URL.

funcMap := template.FuncMap{
  "safeHTML" : template.HTML,
  "safeURL" : template.URL,
}

А затем попытаться вызвать Ваш метод в шаблонное выражение

{{range $element := .}}
{{safeURL $element.URL}}
{{end}}

По руководство для шаблона пакета :

Типизированные строки

По умолчанию этот пакет предполагает, что все конвейеры выдают текстовую строку. Он добавляет экранирующие этапы конвейера, необходимые для правильного и безопасного встраивания этой простой текстовой строки в соответствующий контекст.

Если значение данных не является простым текстом, вы можете убедиться, что оно не экранировано, пометив его type.

Типы HTML, JS, URL и др. из содержимого. go может содержать безопасный контент, который исключен из экранирования.

Шаблон

Hello, {{.}}!

можно вызвать с помощью

tmpl.Execute(out, template.HTML(`<b>World</b>`))

для получения

Hello, <b>World</b>!

вместо

Hello, &lt;b&gt;World&lt;b&gt;!

, который был бы получен, если бы {{.}} Была обычной строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...