我有一个正在尝试放在一起的注册表单,用简单的逻辑在服务器端用简单的ifs检查了表单验证,例如
if username == "" || < 5 {
session.AddFlash("Username is too short")
session.Save(r, w)
}
然后,在我进行的验证结束时,效果很好(出于调试目的)
fmt.Println(len(session.Flashes())) which returns 3
然后我检查是否有像这样的表格错误
if len(session.Flashes()) != 0 {
// Perform Redirect and show flashes
} else {
// Set proper session variables and log user in
}
那么,3 > 0
为什么else
触发语句而不是if语句的第一部分呢?我只是不确定为什么会这样发生。谢谢,如果您需要更多信息,请告诉我,实际的代码片段:
if username == "" || len(username) < 4 {
session.AddFlash("Username is too short")
session.Save(r, w)
}
if email == "" || len(email) < 5 {
session.AddFlash("Email is too short")
session.Save(r, w)
}
if firstname == "" || len(firstname) < 3 {
session.AddFlash("Firstname is too short")
session.Save(r, w)
}
if lastname == "" || len(lastname) < 3 {
session.AddFlash("Lastname is too short")
session.Save(r, w)
}
fmt.Println(len(session.Flashes()) > 0) // true
if len(session.Flashes()) != 0 {
fmt.Println("Why am I here also")
type Page struct {
Title string
Username interface{}
Errors []interface{}
}
session, _ := common.GetSession(r)
data := &Page{"Register", session.Values["username"], session.Flashes()}
session.Save(r, w)
tmpl, err := template.ParseFiles("views/register/register.html")
if err != nil {
http.Error(w, "Failed to load page.", 500)
}
tmpl.ExecuteTemplate(w, "register", data)
} else {
fmt.Println("Why am I here")
_, err := db.Query("// Perform DB Query")
if err != nil {
http.Error(w, "Sorry we had trouble saving your account to the database, try again in a bit.", 500)
}
session.Values["username"] = r.FormValue("username")
session.Values["authenticated"] = true
session.Save(r, w)
http.Redirect(w, r, "/", 303)
}
它的文档记录不是很好,但是显然从会话中Flashes
删除了 闪烁并返回了它们:
func (s *Session) Flashes(vars ...string) []interface{} {
var flashes []interface{}
key := flashesKey
if len(vars) > 0 {
key = vars[0]
}
if v, ok := s.Values[key]; ok {
// Drop the flashes and return it.
delete(s.Values, key)
flashes = v.([]interface{})
}
return flashes
}
源代码在这里。
这里的解决方案是使用一个单独的变量来保存验证状态:
valid := true
if username == "" || len(username) < 4 {
valid = false
session.AddFlash("Username is too short")
session.Save(r, w)
}
// ...
if !valid {
// ...
} else {
// ...
}
编辑: 获取闪光灯而不删除它们的另一种方法是Values
直接从其中获取它们:
flashes := session.Values["_flash"].([]interface{})
问题内容: 无法使用XMLHttpRequest获取数据(状态0,responseText为空): 它警告“状态0”。 与localhost请求的情况相同(cd_catalog.xml保存为本地文件) 但是使用本地主机IP请求 并与本地文件请求 一切正常(状态200) 什么会导致在线请求出现问题(状态= 0)? PS:Live HTTP标头显示在所有4种情况下一切正常: PS2:VMWare上的A
对于pytorch.randn()方法,文档说明: 返回由均值和方差的正态分布(也称为标准正态分布)中的随机数填充的张量。 额外的问题:我如何生成一个平均数总是为0的随机张量?
本文向大家介绍=== 0为true?相关面试题,主要包含被问及=== 0为true?时的应答技巧和注意事项,需要的朋友参考一下 那个 是空语句块而非空对象
问题内容: 我有一个将Android数据保存在其中的函数,但必须将数据转换为。 只要是我想保存为 以下是我的代码,只要值是 将上述转化为。 这是我决定要执行的操作,但是仍然无法将字符串值转换为每当它的。 然后功能 我应该如何对其进行更改以使其起作用? 问题答案: 不用编写自己的函数,而是使用try-catch的内部构造。您的问题是,or 或值本身是a,并且您在null引用上调用方法。请尝试以下操作
下面是片段。请注意,我已经恢复到以前的提交,因此丢失了最近的修改,但请查看我编写的代码,然后才注意到始终等于0() 以下是当检测到活动后按: 以下是NoteActivity接收结果调用的方式。 null 我在我的项目上浪费了很多重要的时间,只是想知道是什么使resultCode和requestCode的值丢失了我发送的值。 任何帮助和指导都将不胜感激。非常感谢!