【问题标题】:Beego POST method always looks for template fileBeego POST 方法总是寻找模板文件
【发布时间】:2020-01-15 03:32:27
【问题描述】:

我正在使用 Beego 编写一个简单的登录/注销功能。

我在router.go 文件中的init() 如下:

func init() {
    beego.Router("/", &controllers.MainController{})
    beego.Router("/login", &controllers.AuthController{})
    beego.Router("/verify", &controllers.AuthController{}, "post:Verify")
}

AuthController:

func (c *AuthController) Verify() {
    email := c.GetString("email")
    password := c.GetString("password")

    fmt.Printf("email: %v password: %v", email, password)
}

我只想将详细信息打印到浏览器(出于调试目的),然后如果用户通过身份验证,则将其重定向到另一个页面。但是这里的问题是Beego总是在寻找模板文件并抛出以下错误:

can't find templatefile in the path:views/authcontroller/verify.tpl

我怎样才能阻止 Beego 那样做,或者我正在做一些“不像 beego”的事情?

【问题讨论】:

  • 听起来 Beego 正在寻找一个模板,以便它可以向客户返回一些东西。您希望它返回什么?
  • 大概是因为你没有在你的操作中写下一个响应,所以它会寻找一个模板。
  • @AnoopS fmt.Printf 打印到标准输出,它不会将响应写入浏览器。如果要在浏览器中显示数据,首先需要将其存储到 Data 映射中,然后通过调用可用的 ServeXxx 方法之一 (example) 来提供它。我不使用beego,所以我不确定是否有更简单的方法来做到这一点。
  • 那么如果不将调试数据传递给您的模板,您希望如何显示调试数据?
  • @mkopriva 感谢您的评论。现在我使用 Data 将值传递给模板,它工作正常。

标签: go beego


【解决方案1】:

如果不设置响应类型,beego 会一直寻找默认模板路径。

如果您不想渲染模板,您可以将响应类型设置为;

func (c *AuthController) Verify() {
    defer c.ServerJSON() // response type
    email := c.GetString("email")
    password := c.GetString("password")

    fmt.Printf("email: %v password: %v", email, password)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多