package main
import (
"log"
"embed"
"net/http"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/template/django/v3"
)
//go:embed views
var viewsAsssets embed.FS
func main() {
// 새로운 엔진 생성
engine := NewPathForwardingFileSystem(http.FS(viewsAsssets), "/views", ".django")
// 엔진을 Views에 전달
app := fiber.New(fiber.Config{
Views: engine,
})
app.Get("/", func(c *fiber.Ctx) error {
// descendant 렌더링
return c.Render("descendant", fiber.Map{
"greeting": "World",
})
})
log.Fatal(app.Listen(":3000"))
}
Register and use custom functions
// 내 커스텀 함수
func Nl2brHtml(value interface{}) string {
if str, ok := value.(string); ok {
return strings.Replace(str, "\n", "<br />", -1)
}
return ""
}
// 새로운 엔진 생성
engine := django.New("./views", ".django")
// 함수 등록
engine.AddFunc("nl2br", Nl2brHtml)
// 엔진을 Views에 전달
app := fiber.New(fiber.Config{Views: engine})
핸들러에서
c.Render("index", fiber.Map{
"Fiber": "Hello, World!\n\nGreetings from Fiber Team",
})
Auto-escape를 비활성화할 때는 주의해야 합니다. 악성 스크립트가 웹 페이지에 삽입되는 XSS 공격에 애플리케이션이 노출될 수 있습니다. Auto-escape가 없으면 사용자가 제공한 데이터로부터 유해한 HTML 또는 JavaScript가 렌더링될 위험이 있습니다.
비활성화할 만한 강력한 이유가 없다면 auto-escape를 활성화해 두는 것이 좋습니다. 비활성화하는 경우, XSS 취약점을 방지하기 위해 사용자가 제공한 모든 콘텐츠를 철저히 살균하고 검증해야 합니다.