Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menggunakan Int rawak untuk foto dalam templat Go

Menggunakan Int rawak untuk foto dalam templat Go

WBOY
WBOYke hadapan
2024-02-10 09:09:09867semak imbas

在 Go 模板中对照片使用随机 Int

editor php templat Zimo In Go, kami selalunya perlu memproses foto dan menggunakan Int rawak boleh membantu kami mencapai beberapa kesan menarik. Random Int ialah fungsi yang menjana integer rawak Kami boleh menggunakannya untuk melakukan operasi rawak pada foto dalam templat, seperti memaparkan foto yang berbeza secara rawak, menambahkan kesan penapis pada foto secara rawak, dsb. Artikel ini akan memperincikan cara menggunakan templat Ints in Go secara rawak untuk memproses foto dan memberikan beberapa contoh aplikasi praktikal. Sama ada anda seorang pemula atau pembangun yang berpengalaman, anda boleh mempelajari beberapa petua praktikal tentang templat Go dan Ints rawak daripada artikel ini.

Kandungan soalan

Saya mempunyai integer rawak mudah dalam kod saya yang saya hantar ke templat

min := 1
            max := 1563
            photo := rand.intn(max - min + 1)
            fmt.println(photo)

            tmpl.executetemplate(w, "index.html", struct {
                pages        []page
                currentpage  int
                totalpage    int
                nextpage     int
                previouspage int
                lastpage     int
                shownext     bool
                showprevious bool
                photo        int
            }{

                pages:        pages,
                currentpage:  pageindex + 1,
                totalpage:    totalpaginationpage,
                nextpage:     pageindex + 1,
                previouspage: pageindex - 1,
                lastpage:     totalpaginationpage - 1,
                shownext:     pageindex+1 < totalpaginationpage,
                showprevious: pageindex-1 >= 0,
                photo:        photo,
            })

Ideanya adalah untuk rawak foto dalam templat saya (saya ada 1563 dalam folder saya)

{{range.page}}

<div id="content">
  <div class="card">
    <p>
      <div class="card-img">

  
    
        <a href="{{.slug}} ">    <img
        

        src="{{.photo}}"
        alt=""
      /></a>
        </div>
        
        <div class="card-info">
          <div class="card-info-title">
<a href="{{.slug}} " >{{.title}} </a>
</div>

src="{{.photo}}" akan ranap templat seolah-olah pembolehubah tidak diluluskan dengan betul. Mungkin masalahnya ialah ini dalam satu gelung, jadi saya memerlukan nombor rawak setiap siaran untuk memaparkan foto?

Adakah terdapat cara lain untuk melakukannya secara terus dalam templat?

Dikemas kini

Terima kasih atas bimbingan yang saya dapat sekarang

min := 1
max := 1563
photos := make([]int, len(pages))
for i := range photos {
    photos[i] = rand.intn(max - min + 1)
}
            

            tmpl.executetemplate(w, "index.html", struct {
                pages        []page
                currentpage  int
                totalpage    int
                nextpage     int
                previouspage int
                lastpage     int
                shownext     bool
                showprevious bool
                photo        []int
            }{

                pages:        pages,
                currentpage:  pageindex + 1,
                totalpage:    totalpaginationpage,
                nextpage:     pageindex + 1,
                previouspage: pageindex - 1,
                lastpage:     totalpaginationpage - 1,
                shownext:     pageindex+1 < totalpaginationpage,
                showprevious: pageindex-1 >= 0,
                photo:        photos,   
            })

Dalam templat

{{range $idx, $page := .pages}}


<div id="content">
  <div class="card">
    <p>
      <div class="card-img">

  
    
        <a href="{{.slug}} ">    <img
        
 src="{{index $.photos $idx}}"
               alt=""
      /></a>
        </div>
        
        <div class="card-info">
          <div class="card-info-title">
<a href="{{.slug}} " >{{.title}} </a>
</div>

<div class="card-info-category">
  <p>

tags:
</p>
       
          <ul>
       
            <li>
  {{.tags}}
          </li>
  

</ul>
</div>


<div class="card-info-date">
{{.date}} 

</div>

</div>
</p>
</div>

</div>



       
{{end}}

Juga mencuba

<a href="{{.slug}} ">    <img
        
 src="/public/suisse/suisse{{index $.photos $idx}}.jpg"
               alt=""
      /></a>

Tetapi malangnya, templat berhenti melaksanakan sebaik sahaja saya memanggilnya

{{index $.Photos $idx}}

Saya rasa ini adalah sejenis kesilapan menaip di pihak saya?

Penyelesaian

{{range}} 操作会更改点,因此 {{range .pages}} 内的 {{.photo}} 将解析为 .pages elemen.

Gunakan $ untuk merujuk kepada nilai mentah "luar" yang diserahkan kepada pelaksanaan templat:

src="{{$.photo}}"

Walaupun ini hanyalah integer, anda mungkin mahu menggunakannya dalam laluan atau url seperti ini:

src="/path/to/images?id={{$.photo}}"

Nota: Jika anda ingin menggunakan imej yang berbeza untuk semua halaman, anda mesti menghantar nombor yang berbeza untuk setiap halaman, bukan hanya satu nombor. Kemudian tambahkan photo 字段,然后您可以在 {{range}} 中引用它,如原始代码中的 {{.photo}} pada halaman.

Anda menulis bahawa anda tidak boleh mengubah suai page,因为它来自您的数据库。如果是这样,则传递一段随机数并使用 index aksesnya seperti berikut:

min := 1
max := 1563
photos := make([]int, len(pages))
for i := range photos {
    photos[i] = rand.intn(max - min + 1)
}

tmpl.executetemplate(w, "index.html", struct {
    pages        []page
    currentpage  int
    totalpage    int
    nextpage     int
    previouspage int
    lastpage     int
    shownext     bool
    showprevious bool
    photo        []int
}{

    pages:        pages,
    currentpage:  pageindex + 1,
    totalpage:    totalpaginationpage,
    nextpage:     pageindex + 1,
    previouspage: pageindex - 1,
    lastpage:     totalpaginationpage - 1,
    shownext:     pageindex+1 < totalpaginationpage,
    showprevious: pageindex-1 >= 0,
    photo:        photos,
})

Dalam templat:

{{range $idx, $page := .pages}}
    <a href="{{.slug}} "><img
        src="{{index $.photos $idx}}"
        alt=""/>
    </a>
{{end}}

Atau daftar fungsi random yang boleh anda panggil dari templat:

// parse the template as you did, but first register a random function:
min, max := 1, 1563
tmpl, err := template.new("").funcs(template.funcmap{
    "random": func() int { return rand.intn(max - min + 1) },
}).parsefiles("template-name.html")

Anda boleh memanggilnya dari templat seperti ini:

{{range .Pages}}
    <a href="{{.Slug}} "><img
        src="{{random}}"
        alt=""/>
    </a>
{{end}}

Atas ialah kandungan terperinci Menggunakan Int rawak untuk foto dalam templat Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam