Перебрать все значения PostForm Gin Gonic

Есть ли простой способ перечислить / перебрать все значения поста с помощью Gin Gonic? (Идти)

Я пытался:

c.Request.ParseForm()
for key, value := range c.Request.PostForm {
    log.Printf("POST %v = %v",key,value)
}

Но это не показывает значений, однако, когда я проверяю значения непосредственно из контекста:

log.Printf("POST email = %v", c.PostForm("email")

Выводит нормально.

Я пытаюсь отобразить все значения сообщений в контексте gin.H {}, чтобы в случае сбоя я мог передать опубликованные значения обратно в контекст шаблона .HTML и предварительно заполнить их (вместе с моим сообщением об ошибке) . Лучшее, что я нашел, - это вручную привязать каждое значение POST к карте gin.H {}, но для большой формы это кажется многословным и не идеальным.


person BadPirate    schedule 11.10.2016    source источник
comment
глядя на реализацию c.PostForm(), я предполагаю, что PostForm не был проанализирован и, следовательно, может не содержать никакого значения github.com/gin-gonic/gin/blob/develop/context.go#L264-L276   -  person phoet    schedule 11.10.2016
comment
@phoet - Похоже на то ... но не нужно ли ParseForm() вызывать синтаксический анализ? Что исправить? Мне нужно вместо этого позвонить ParseMultipartForm?   -  person BadPirate    schedule 12.10.2016


Ответы (2)


Нам также нужно было что-то вроде описания @BadPirate, поэтому, если кому-то понадобится джин 1.6.2

func register(c *gin.Context){
    c.MultipartForm()
    for key, value := range c.Request.PostForm {
        log.Printf("%v = %v \n",key,value)
    }
}

Спасибо @BadPirate и @phoet за информацию.

person Fernando Leal    schedule 08.04.2020

Проблема здесь заключалась в том, что форма (не показана) была составной. ParseForm не анализирует составные формы и, следовательно, данные. Чтобы исправить это, вместо этого вызовите ParseMultipartForm. Спасибо @phoet за указание на метод в Gin Gonic для PostForm (который вызывает ParseMultipartForm для вас и делает это автоматически), который помог мне найти ответ.

person BadPirate    schedule 12.10.2016