Go 从零开始(四)表单提交
一、创建表单
打印 html 标签字符串,并动态加入表单提交的路径。
func articlesCreateHandler(w http.ResponseWriter, r *http.Request) {
html := `
<!DOCTYPE html>
<html lang="en">
<head>
<title>创建文章</title>
</head>
<body>
<form action="%s" method="post">
<p><input type="text" name="title"></p>
<p><textarea name="body" cols="30" rows="10"></textarea></p>
<p><button type="submit">提交</button></p>
</form>
</body>
</html>
`
storeURL, _ := router.Get("articles.store").URL()
fmt.Fprintf(w, html, storeURL)
}
二、接收表单提交的数据
上一步表单提交到了 store 方法。所以在以下 store 方法中可以获取表单数据。
func articlesStoreHandler(w http.ResponseWriter, r *http.Request) {
err := r.ParseForm()
if err != nil {
// 解析错误,这里应该有错误处理
fmt.Fprint(w, "请提供正确的数据!")
return
}
// PostForm 获取 post put 数据
// 在使用之前需要调用 ParseForm 方法
title := r.PostForm.Get("title")
// Form 获取 post put get 数据
// 在使用之前需要调用 ParseForm 方法
title := r.Form.Get("title")
// FormValue()、PostFormValue() 获取单个的值
// 无需调用 ParseForm 方法
title := r.PostFormValue("title")
fmt.Fprintf(w, "PostForm: %v <br>", r.PostForm)
fmt.Fprintf(w, "Form: %v <br>", r.Form)
fmt.Fprintf(w, "title: %v", title)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具