本书未发布

12.21. Send Template

未匹配的标注
package main

/*
eudore默认不支持render html,需要设置render支持。
当请求header "Accept: text/html"时,才会调用render html,否在按照accept header来进行render。
可以强制设置Accent header的值强制使用render html
*/

import (
    "github.com/eudore/eudore"
    "github.com/eudore/eudore/component/httptest"
    "html/template"
    "os"
)

var viewpath = "index.html"
var viewdata = map[string]interface{}{
    "name":    "eudore",
    "message": "hello eudore",
}

func main() {
    content := []byte(`name: {{.name}} message: {{.message}}`)
    tmpfile, _ := os.Create(viewpath)
    defer os.Remove(tmpfile.Name())
    tmpfile.Write(content)

    app := eudore.NewApp()
    app.Renderer = eudore.NewRenderHTMLWithTemplate(app.Renderer, nil)
    app.AnyFunc("/*path", func(ctx eudore.Context) {
        ctx.SetParam("template", viewpath)
        ctx.Render(viewdata)
    })
    app.AnyFunc("/2/*path", func(ctx eudore.Context) interface{} {
        ctx.SetParam("template", viewpath)
        return viewdata
    })
    app.AnyFunc("/template/*", func(ctx eudore.Context) error {
        t, err := template.ParseFiles(viewpath)
        if err != nil {
            return err
        }
        return t.Execute(ctx, viewdata)
    })

    client := httptest.NewClient(app)
    client.NewRequest("GET", "/1").WithHeaderValue("Accept", "application/json").Do().Out()
    client.NewRequest("GET", "/1").WithHeaderValue("Accept", eudore.MimeTextHTML).Do().Out()
    client.NewRequest("GET", "/1").WithHeaderValue("Accept", eudore.MimeTextPlain).Do().Out()

    app.Listen(":8088")
    // app.CancelFunc()
    app.Run()
}

反馈和交流请加群组:QQ群373278915

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~