goland-gin框架渲染模板1

134 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

1、定义路由


//定义路由组
share := r.Group("")
{
   share.GET("/profile", UserProfile)
   share.GET("/index", addIndex)
   share.GET("/cart", CartGood)
   share.GET("/category-details/:Species", CategoryDetails)
   share.GET("/chat", ChatStatic)
   share.GET("/edit-need", EditNeedStatic)
   share.GET("/edit-profile", EditProfileStatic)
   share.GET("/goods-category", goodsCategory)
   share.GET("/lend-items", LendStatic)
   share.GET("/login", LoginStatic)
   share.GET("/myneed", MyNeedStatic)

2、如:index方法 addIndex渲染,使用c.HTML(状态码,name,gin.H{ 名: 数据 }) 数据可为 数组,基本类型数据,结构体。。。 名可任取,相当于赋值给前端使用

//首页-动态展示
func addIndex(c *gin.Context) {
   client, err := config.GetClient()
   if err != nil {
      fmt.Println(err)
      respError(c, err)
      return
   }
   contract, err := config.GetAddress(client)
   if err != nil {
      respError(c, err)
      return
   }

   //获取id
   id := config.HaveId(client)
   if err != nil {
      fmt.Println(err)
      respError(c, err)
      return
   }
   //种类
   var stickArr []StickAll
   for j := 1; j < 8; j++ {

      StickData, err := config.ShowStick(client, big.NewInt(int64(j)))
      if err != nil {
         respError(c, err)
         return
      }
      stickArr1 := []StickAll{StickAll{Sticks: StickData.Name, SticksImg: StickData.Img}}
      stickArr = append(stickArr, stickArr1...)
   }
   fmt.Println(stickArr)
   //定义一个结构体数组
   var arr1 []GoodsPort
   var goodArr []GoodsPort
   var goodArr1 []GoodsPort
   //nums := make([]int64, 0)
   nums := generateRandomNumber(0, len(id), len(id))
   fmt.Println("len(id):", len(id))
   //goodNums:=generateRandomNumber(0, len(id), 4)
   fmt.Println("nums", nums)
   //gRand := rand.New(rand.NewSource(time.Now().UnixNano()).(rand.Source64))、

   //轮播
   for j := 0; j < 3; j++ {

      goodData, goodData1, err2 := config.HaveIndex(client, id[j])
      //print("图片路径",goodImg)
      if err2 != nil {
         //respError(c, err2)
         fmt.Println(err2)
         return
      }
      arr0 := []GoodsPort{GoodsPort{Id: goodData.Id, Names: goodData.Name, Species: goodData.Species, Rent: goodData.Rent, EthPledge: goodData.EthPledge, GoodImg: goodData1.GoodImg, GoodSign: goodData1.GoodSign}}
      goodArr1 = append(goodArr1, arr0...)
      fmt.Println("goodArr", goodArr1)
   }
   for j := 0; j < 3; j++ {
      x := int64(rand.Intn(len(id)))
      goodData, goodData1, err2 := config.HaveIndex(client, big.NewInt(x))
      //print("图片路径",goodImg)
      if err2 != nil {
         fmt.Println("err2",err2)

         return
      }
      if goodData.Name != "" && goodData.Available == true && goodData.IsBorrow == false {
         arr2 := []GoodsPort{GoodsPort{Id: goodData.Id, Names: goodData.Name, Species: goodData.Species, Rent: goodData.Rent, EthPledge: goodData.EthPledge, GoodImg: goodData1.GoodImg, GoodSign: goodData1.GoodSign}}
         goodArr = append(goodArr, arr2...)
      }
   }
   for i := 0; i < len(id)+1; i++ {
      if i < len(id) {
         //var Owner common.Address
         //xint:=int64(rand.Intn(len(id)))
         //xint := int64(gRand.Intn(len(id)))
         goodData, goodData1, err3 := config.HaveIndex(client, big.NewInt(nums[i]))
         //print("图片路径",goodImg)
         if err3 != nil {
            fmt.Println(err3)

            return
         }
         if goodData.Name != "" && goodData.Available == true && goodData.IsBorrow == false {
            arr2 := []GoodsPort{GoodsPort{Id: goodData.Id, Names: goodData.Name, Species: goodData.Species, Rent: goodData.Rent, EthPledge: goodData.EthPledge, GoodImg: goodData1.GoodImg, GoodSign: goodData1.GoodSign}}
            arr1 = append(arr1, arr2...)
         }

         //goodsPort1 := goodsPort{ Names: names, Species: species, Rent: rent, EthPledge: ethPledge}
         //fmt.Println(goodsPort{},addr)
      } else {
         userName, people, _, _, _, err := config.GetUserMethod(contract, LoginUser)
         userImg, err := contract.GetUserImg(nil, LoginUser)
         fmt.Println("res", userName)
         if err != nil {
            fmt.Println(err)
            return
         }
         c.HTML(http.StatusOK, "Static/index.html", gin.H{
            "goodArr":  goodArr,
            "goodArr1": goodArr1,
            "goodsPor": arr1,
            "userName": userName,
            "userImg":  userImg,
            "address":  people,
            "stickArr": stickArr,
         })
      }
   }
}

3、前端代码


{{ define "Static/index.html" }}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Share Fish-首页</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="share/static/js/public.js"></script>
    <link rel="stylesheet" href="share/css/not-login.css">
    <link rel="stylesheet" href="share/css/materialize2.css">
    <link href="share/css/styletb.css" rel="stylesheet" type="text/css"/>

    <!-- 图标 -->
    <link rel="stylesheet" href="share/static/css/flaticon.css">
    <!-- 底部导航 -->
   <link rel="stylesheet" href="share/css/tabbar.css">
    <!-- Slick CSS -->
    <link rel="stylesheet" href="share/assets/css/plugins/slick.min.css">
    <!-- Main Style CSS -->
    <link rel="stylesheet" href="share/assets/css/style.css">

    <!-- App css搜索框 -->
    <link href="share/static/css/bootstrap.min.css" rel="stylesheet" type="text/css">
    <link href="share/static/css/icons.min.css" rel="stylesheet" type="text/css">
    <link href="share/static/css/app.min.css" rel="stylesheet" type="text/css">
</head>

<body>
    <!-- 未登录 -->

    {{if eq "" .userName}}
        <div class="slider" style=" position: fixed;
        left: 0;
        bottom: 86px;
        width: 100%;
        height: 49px;
        line-height: 49px;
        z-index: 1010;">
            <ul class="slides" style="background: none;">
                <li><img src="" alt="">
                    <div class="caption slider-content center-align ">
                        <span style="font-size: 15px;">登录Share Fish打开精彩世界</span>
                        <a href="../login" class="button-default" style="float: right;">立即登录</a>
                    </div>
                </li>
            </ul>
        </div>
    {{else}}
        <div></div>
    {{end}}

    <!--====================  preloader area ====================-->
    <div class="preloader-activate preloader-active">
        <div class="preloader-area-wrap">
            <div class="spinner d-flex justify-content-center align-items-center h-100">
                <div class="img-loader"></div>
            </div>
        </div>
    </div>
    <!--====================  End of preloader area  ====================-->

    <div class="body-wrapper space-pt--70 ">
        <!--====================  header area ====================-->
        <header>
            <div class="header-wrapper border-bottom">
                <div class="container space-y--15">
                    <div class="row align-items-center">
                        <div class="col-auto">
                            <!-- header logo -->
                            <div class="header-logo">
                                <a href="../index">
                                   <img src="share/assets/img/logo.png" class="img-fluid" alt="" style="width: 75px;">
                                </a>
                            </div>
                        </div>
                        <div class="col d-flex justify-content-center">
                            <!-- 搜索框 -->
                            <div class="header-search">
                                <a href="../search-page">
                                    <div class="input-group">
                                        <input type="text" id="chat-search" name="chat-search" class="form-control"
                                            placeholder="搜索好物" style="    padding-left: 30px;">

                                </a>

                                <span style="position: absolute;padding-top: 7px;padding-left: 10px;
                                       "><i class="fa fa-search"></i></span>
                            </div>
                        </div>
                    </div>
                    <div class="col-auto">
                        <button class="header-menu-trigger" id="header-menu-trigger">
                            <i class="fas fa-align-right" style="font-size: 20px;
                                color: grey;"></i>
                        </button>
                    </div>
                </div>
            </div>
        </header>
        <!--====================  End of header area  ====================-->
        <!--====================  mobile menu overlay ====================-->

        {{ template "Static/menu.html" . }}

        <!--====================  End of mobile menu overlay  ====================-->
        <!--====================  hero slider ====================-->

        <div class="hero-slider bg-color--grey space-y--10">
            <div class="container">
                <div class="row row-10">
                    <div class="col-12">
                        <div class="hero-slider-wrapper">
                            {{range  $key,$vlaue:=.goodArr1}}
                            <a href="../shop-product/{{$vlaue.Id}}">
                                {{range $k,$v:=$vlaue.GoodImg}}
                                <div class="hero-slider-item d-flex bg-img"
                                    data-bg=../{{$v}}>
                                    {{end}}
                                    <div class="container">
                                        <div class="row">
                                            <div class="col-12">
                                                <!-- hero slider content -->
                                                <div class="hero-slider-content">
                                                    <h2 class="hero-slider-content__title space-mb--10">Share Fish <br>
                                                        让闲置游起来</h2>
                                                    <p class="hero-slider-content__text">-----</p>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </a>
                            {{end}}

                        </div>
                    </div>
                </div>
            </div>
        </div>
        <!--====================  End of hero slider  ====================-->
        <!--====================  category slider ====================-->

        <div class="jq22-palace jq22-palace-one">
            <div class="page-title-box" style="padding-left: 8px;">
                <h4 class="mb-0"><b>商品分类</b></h4>
            </div>
            {{range $k,$v:=.stickArr}}
         <a href="../category-details/{{$v.Sticks}}" class="jq22-palace-grid">
            <div class="jq22-palace-grid-icon">
               <img src="{{$v.SticksImg}}" alt="">
            </div>
            <div class="jq22-palace-grid-text">
               <h2>{{$v.Sticks}}</h2>
            </div>
         </a>
            {{end}}
         <a href="goods-category" class="jq22-palace-grid">
            <div class="jq22-palace-grid-icon">
               <img src="share/images/nav-008.png" alt="">
            </div>
            <div class="jq22-palace-grid-text">
               <h2>更多品类</h2>
            </div>
         </a>
      </div>

        <!--====================  End of category slider  ====================-->
        <!--====================  featured product ====================-->
        <div class="featured-product-area space-mb--25">
            <div class="container">
                <div class="row">
                    <div class="col-12">
                        <!-- section title -->
                        <div class="page-title-box">
                            <h4 class="mb-0"><b>口碑推荐</b></h4>
                        </div>

                        <!-- featured products -->
                        <div class="featured-product-wrapper space-mb-m--15">
                            <div class="row row-5">
                                {{ range $key ,$value:=.goodArr }}
{{/*                                    {{if  le 3 $key }}<div></div>*/}}
{{/*                                    {{else}}*/}}
                                        <div class="col-4">
                                            <div class="featured-product space-mb--15">
                                                <div class="featured-product__image">
                                                    <a href="shop-product/{{$value.Id}}">
                                                        {{ range $k ,$v:=$value.GoodImg}}
                                                            <img src={{$v}} class="img-fluid" alt="">
                                                        {{end}}
                                                    </a>
                                                </div>
                                                <div class="featured-product__content">
                                                    <div class="price" style="padding-left: 17px;
                                            padding-right: 17px;">
                                                        <span class="discounted-price">{{ $value.Rent }}元/天</span>
                                                    </div>

                                                </div>
                                            </div>
                                        </div>
{{/*                                    {{end}}*/}}
                                {{end}}
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <!--====================  End of featured product  ====================-->
        <!--====================  products area ====================-->
        <div class="products-area">
            <div class="container">
                <div class="row">
                    <div class="col-12">
                        <!-- section title -->
                        <div class="page-title-box">
                            <h4 class="mb-0"><b>更多好物</b></h4>
                        </div>
                        <!-- all products -->
                        <div class="all-products-wrapper space-mb-m--20">
                            <div class="row">
                                {{ range $key ,$value:=.goodsPor }}
                                    <div class="col-6">
                                        <div class="grid-product space-mb--20">
                                            <div class="grid-product__image">
                                                <a href="shop-product/{{$value.Id}}">
                                                    {{ range $k ,$v:=$value.GoodImg}}
                                                        <img src={{$v}} class="img-fluid" alt="">
                                                    {{end}}
                                                </a>
                                            </div>
                                            <div class="grid-product__content">
                                                <h3 class="title"><a href="shop-product">{{ $value.Names }}</a></h3>

                                                <span class="category">{{ $value.Species }}</span>
                                                <div class="price">
                                                    <span class="discounted-price">{{ $value.Rent }}元/天</span>

                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                {{end}}

                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <!--====================  End of products area  ====================-->
        <!--====================  footer area ====================-->
        <footer style="padding-bottom: 100px;">

            <div class="sc-bottom-bar">
                <a class="sc-menu-item sc-current" href="#"><i class="fas fa-home"></i></a>
                <a class="sc-menu-item " href="../goods-category"><i class="fas  fa-list"></i></a>
                <a href="../chat" class="sc-menu-item "><i class="fas fa-plus"></i></a>
                <a class="sc-nav-indicator"></a>
                <a class="sc-menu-item" href="../select_chat_list"><i class="fas fa-comments"></i></a>
                <a class="sc-menu-item" href="../ui-me"><i class="fas fa-user"></i></a>
            </div>

        </footer>
        <!--====================  End of footer area  ====================-->
    </div>
    <!-- JS
    ============================================ -->
    <!-- Modernizer JS -->
    <script src="share/js/tabbar.js"></script>
    <script src="share/assets/js/modernizr-2.8.3.min.js"></script>
    <!-- jQuery JS -->
    <script src="share/assets/js/jquery-3.4.1.min.js"></script>
    <!-- Bootstrap JS -->
    <script src="share/assets/js/bootstrap.min.js"></script>
    <!-- IonRanger JS -->
    <script src="share/assets/js/plugins/ion.rangeSlider.min.js"></script>
    <!-- SVG inject JS -->
    <script src="share/assets/js/plugins/svg-inject.min.js"></script>
    <!-- Slick slider JS -->
    <script src="share/assets/js/plugins/slick.min.js"></script>

    <script src="share/assets/js/main.js"></script>

    <!-- script js -->
    <script src="share/js/script1.js"></script>

    <script src="share/js/pop-message.js"></script>
    <script type="text/javascript" src="share/static/js/logout.js"></script>
    
    <script type="text/javascript" src="share/static/js/slider.js"></script>
    <script type="text/javascript" src="share/static/js/swiper-3.4.1.jquery.min.js"></script>
    <script type="text/javascript">
        var swiper = new Swiper('.swiper-container',{
            pagination: '.swiper-pagination',
            paginationClickable: true
        });
    </script>
 <script src="share/js/materialize.min.js"></script>
 <script src="share/js/sliderbg.js"></script>
</body>
{{ end }}
</html>