正如golang文档所述,模板函数必须至少有1个返回参数,所以我想我可以排除模板函数。
所以我想我可以直接在Content模型上创建函数,但我猜不是吗?
我认为下面的标记非常自我解释(根文件夹中的index.tmpl文件):
{{$request := .Request}}
{{$response := .Response}}
{{if eq $request.Method "POST"}}
{{.Redirect "page1" 301}}
{{end}}
<!DOCTYPE html>
<html>
<head>
<title>{{.Title | title}}</title>
</head>
<body>
<h1>{{.Title}}</h1>
{{.Body}}
<p>{{.ContentType}}</p>
<p>{{$request}}</p>
<p>{{lol}}</p>
<form method="POST">
<input type="text" name="lolcat"/>
<input type="submit" value="submit"/>
</form>
</body>
</html>
这有点像人们如何在ASP.Net/Razor中做到这一点,但它不起作用。
其余代码在http://play.golang.org/p/LMKdflA9RS
要在本地测试程序,您需要:
main.go
index.tmpl
page1.tmpl (just use the same as index.tmpl)
我做错了什么,怎么能实现? : - )
解决方案:
http://play.golang.org/p/b2I_uzjiSH
感谢Ainar-G!
答案 0 :(得分:6)
考虑到这一点,以下是您如何做到这一点:http://play.golang.org/p/Md5A54rLm7。
您无法直接写入w
,因为这会导致它将响应代码设置为200.您还应该在包装器中注册redirect
函数,因为所有模板函数都必须返回一个或两个(有错误)值。再一次,只因为你可以,这并不意味着你应该。