diff --git a/edit.html b/edit.html index 41abf79..7411e5a 100644 --- a/edit.html +++ b/edit.html @@ -1,11 +1,6 @@ - -

Editando {{.Titulo}}

- - \ No newline at end of file diff --git a/view.html b/view.html new file mode 100644 index 0000000..812b2e9 --- /dev/null +++ b/view.html @@ -0,0 +1,5 @@ +

{{.Titulo}}

+ +

[Editar]

+ +
{{printf "%s" .Corpo}}
\ No newline at end of file diff --git a/wiki.go b/wiki.go index 47c59bb..722cd13 100644 --- a/wiki.go +++ b/wiki.go @@ -1,14 +1,6 @@ package main import ( - "fmt" - - // O html/template package faz parte da biblioteca padrão do Go. Podemos usar html/template - // para manter o HTML em um arquivo separado, o que nos permite alterar o layout - // de nossa página de edição sem modificar o código Go. - - // =======================================> Vá para o arquivo edit.html - "html/template" "io/ioutil" "log" @@ -37,26 +29,19 @@ func carregaPagina(titulo string) (*Pagina, error) { return &Pagina{Titulo: titulo, Corpo: corpo}, nil } +// Já que estamos trabalhando com templates agora, vamos criar um template para o nosso viewHandler +// Verifique o arquiv view.html + +// Modifique viewHandler de acordo: + // viewHandler escreve o titulo e corpo da pagina em html formatado func viewHandler(escrever http.ResponseWriter, ler *http.Request) { titulo := ler.URL.Path[len("/view/"):] pagina, _ := carregaPagina(titulo) - fmt.Fprintf(escrever, "

%s

%s
", pagina.Titulo, pagina.Corpo) + template, _ := template.ParseFiles("view.html") + template.Execute(escrever, pagina) } -// Modifique editHandler para usar o template, em vez do HTML hardcoded: - -// A função template.ParseFiles lerá o conteúdo de edit.html e retornará um ponteiro *template.Template. - -// O método template.Execute executa o template, escrevendo o HTML gerado no http.ResponseWriter. -// Os identificadores .Titulo e .Corpo lá no edit.html referem-se a Titulo e Corpo -// presentes aqui na struct Pagina. - -// As diretivas de temlate são colocadas entre chaves duplas. A instrução printf "%s" .Corpo -// é uma chamada de função que tem .Corpo como uma string em vez de um fluxo de bytes como saída. -// O html/template package ajuda a garantir que apenas HTML seguro e com aparência correta seja -// gerado por ações de template. - // editHandler carrega um formulário de edição func editHandler(escrever http.ResponseWriter, ler *http.Request) { titulo := ler.URL.Path[len("/edit/"):]