go web开发第五讲

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

今天给大家介绍下go web开发的第五讲-表单处理

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

首先简单介绍下什么是表单。表单是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方法回显表单处理结果,将新插入的数据显示在表单上。

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