Menggunakan Int rawak untuk foto dalam templat Go

WBOY
Lepaskan: 2024-02-10 09:09:09
ke hadapan
895 orang telah melayarinya

在 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,
            })
Salin selepas log masuk

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>
Salin selepas log masuk

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,   
            })
Salin selepas log masuk

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}}
Salin selepas log masuk

Juga mencuba

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

Tetapi malangnya, templat berhenti melaksanakan sebaik sahaja saya memanggilnya

{{index $.Photos $idx}}
Salin selepas log masuk

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}}"
Salin selepas log masuk

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

src="/path/to/images?id={{$.photo}}"
Salin selepas log masuk

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,
})
Salin selepas log masuk

Dalam templat:

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

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")
Salin selepas log masuk

Anda boleh memanggilnya dari templat seperti ini:

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

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan