Go 言語ドキュメントの html/template.Execute 関数を使用してテンプレートをレンダリングする
Go 言語ドキュメントの html/template.Execute 関数を使用して、テンプレートをレンダリングします。特定のコード例が必要です。
Web アプリケーションの開発では、テンプレートエンジンは非常に重要な重要な部分です。テンプレート エンジンは、テンプレート ファイルとデータをマージすることで、最終的な HTML ページを出力できます。同時に、テンプレート エンジンは HTML ページから動的データを分離できるため、アプリケーションの保守と拡張が容易になります。 Go 言語のテンプレート エンジンは非常に強力で、実際のプロジェクトで広く使用されています。
Go 言語には多くの強力なテンプレート エンジンが用意されており、その中で最もよく使用されるのは html/template テンプレート エンジンです。その利点は、クロスサイト スクリプティング攻撃を十分に回避できることと、その使用方法が比較的シンプルで簡単に習得できることです。
この記事では、具体的な例を使用して、html/template.Execute 関数を使用してテンプレートをレンダリングする方法を説明します。
例の説明:
ここでは、ユーザーが送信したフォームのデータをデータベースに保存し、応答ページを出力する単純なアプリケーションを想定しています。この応答ページには次の要件があります:
- ユーザーによって送信されたデータを表示する;
- 送信が成功した場合のプロンプト メッセージを表示する。
上記の目的を達成するには、まず以下に示すように HTML テンプレートを作成する必要があります:
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>提交成功</title> </head> <body> <h2 id="您提交的数据如下">您提交的数据如下:</h2> <p>姓名: {{.Name}}</p> <p>性别: {{.Gender}}</p> <p>年龄: {{.Age}}</p> <h3 id="提交成功">提交成功!</h3> </body> </html>
上記の HTML テンプレートでは、{{.Name} を使用しました。 3 つの変数 {{.Gender}} と {{.Age}} は、テンプレートがレンダリングされるときにユーザーが送信したデータに置き換えられます。
Go 言語の html/template.Execute 関数を使用してテンプレートをレンダリングする方法を見てみましょう。
package main import ( "html/template" "net/http" ) type UserInfo struct { Name string Gender string Age int } func main() { http.HandleFunc("/", handleRequest) http.ListenAndServe(":8888", nil) } func handleRequest(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { // 解析表单数据 r.ParseForm() // 获取表单数据 name := r.FormValue("name") gender := r.FormValue("gender") age := r.FormValue("age") // 生成数据模型 userInfo := UserInfo{ Name: name, Gender: gender, Age: age, } // 解析模板文件 tmpl, err := template.ParseFiles("template.html") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // 将数据和模板渲染 err = tmpl.Execute(w, userInfo) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) } return } // 读取表单页面 http.ServeFile(w, r, "form.html") }
上記のコードでは、まずユーザーが送信したデータを含む UserInfo 構造体を定義します。 handleRequest 関数では、まず POST リクエストであるかどうかを判断します。POST リクエストの場合は、まずフォーム データを解析し、次に UserInfo データ モデルを生成し、テンプレート ファイルとともにレンダリングして最終的な HTML ページを生成します。
テンプレートをレンダリングするプロセスでは、まず template.ParseFiles 関数を通じてテンプレート ファイルを読み込み、次に tmpl.Execute 関数を呼び出して、出力用のデータとテンプレートをマージします。テンプレートのレンダリング中にエラーが発生した場合は、http.Error 関数を使用してクライアントにエラー メッセージを返します。
最後に、POST リクエストでない場合は、フォーム ページ (form.html) を読み取り、クライアントに返します。
概要:
上記のコード例を通じて、html/template.Execute 関数を使用してテンプレートをレンダリングするのが非常に簡単であることがわかります。データ モデルとテンプレート ファイルをマージし、Execute 関数を使用して最終的な HTML ページを出力するだけです。
html/template テンプレートエンジンの利用方法は非常にシンプルで柔軟といえます。 Go言語はクロスプラットフォームのアプリケーション開発言語として、テンプレートエンジンの設計も非常に優れています。高パフォーマンスの Web サイトを開発している場合でも、小規模なアプリケーションを開発している場合でも、html/template テンプレート エンジンを使用することは良い選択です。
以上がGo 言語ドキュメントの html/template.Execute 関数を使用してテンプレートをレンダリングするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

GO言語で構造を定義する2つの方法:VARとタイプのキーワードの違い。構造を定義するとき、GO言語はしばしば2つの異なる執筆方法を見ます:最初...

ポインター構文とviperライブラリの使用における問題への取り組みGO言語でプログラミングするとき、特にポインターの構文と使用を理解することが重要です...
