golang web开发第5讲-表单处理

作者: dreamfly 分类: go 发布时间: 2019-04-29 23:18

我们都知道,一个动态网站的核心就是数据的交互。而如何进行数据的交互,答案就是表单。我们通过提交表单,将需要保存的数据提交给后台处理程序。后台处理程序在经过过滤等其他处理,然后保存到数据库中。但我们需要展现他们的时候,我们再从数据库中取出他们。

首先简单介绍下什么是表单。表单是html中的一个基本元素,它设计的目的就是为了数据的交互。有两种提交表单的方式,一种是get,一种是post.

下面主要讲解go web中如何处理表单。

  1. 编写html表单页面,action为需要提交的后台处理url.
  2. 编写表单处理逻辑,嗲用request parseForm方法进行表单接收 r.PostForm.Get("title")接收具体的表单值
  3. 编写回显表单处理结果
<form method="post" action="formadd">

<textarea name="title"></textarea>

<button type="submit">添加新闻</button>

</form>

method是提交表单的方式,get是在url中提交,post是在header中提交

name是要提交给后台接收的值,这里是title.

func handleFormAdd(w http.ResponseWriter, r *http.Request) {

 r.ParseForm()

 title := r.PostForm.Get("title")

 //TODO:将数据保存到数据库,然后再显示到页面上

 db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test_new")

 if err != nil {

 panic(err)

 }

 db.Exec("insert into news set title = ?", title)

}

这里我们调用r.ParseForm()对表单提交的title字段进行接收,然后插入到数据库中。

func handleForm(w http.ResponseWriter, r *http.Request) {

 //数据库获取数据

 db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/test_new")

 if err != nil {

 panic(err)

 }

 rows, err := db.Query("select id,title from news")

 if err != nil {

 panic(err)

 }

 var (

 id string

 title string

 )

 var news []string

 for rows.Next() {

 rows.Scan(&id, &title)

 news = append(news, title)

 }

 templates.ExecuteTemplate(w, "form.html", news)

}

然后我们调用handleForm方法回显表单处理结果,将新插入的数据显示在表单上。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!