Verwenden von zufälligem Int für Fotos in der Go-Vorlage

WBOY
Freigeben: 2024-02-10 09:09:09
nach vorne
869 Leute haben es durchsucht

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

php-Editor Zimo In Go-Vorlagen müssen wir häufig Fotos verarbeiten, und die Verwendung von Random Int kann uns dabei helfen, einige interessante Effekte zu erzielen. Random Int ist eine Funktion, die zufällige Ganzzahlen generiert. Wir können sie verwenden, um zufällige Operationen an Fotos in Vorlagen durchzuführen, z. B. das zufällige Anzeigen verschiedener Fotos, das zufällige Hinzufügen von Filtereffekten zu Fotos usw. In diesem Artikel erfahren Sie, wie Sie zufällige Ints in Go-Vorlagen zum Verarbeiten von Fotos verwenden, und geben einige Beispiele für praktische Anwendungen. Unabhängig davon, ob Sie Anfänger oder erfahrener Entwickler sind, können Sie in diesem Artikel einige praktische Tipps zu Go-Vorlagen und zufälligen Ints erfahren.

Frageninhalt

Ich habe eine einfache zufällige Ganzzahl in meinem Code, die ich an eine Vorlage übergebe

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,
            })
Nach dem Login kopieren

Die Idee ist, ein Foto in meiner Vorlage zufällig anzuordnen (ich habe 1563 in meinem Ordner)

{{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>
Nach dem Login kopieren

src="{{.photo}}" führt zum Absturz der Vorlage, als ob die Variable nicht korrekt übergeben worden wäre. Vielleicht liegt das Problem darin, dass dies innerhalb einer Schleife geschieht und ich daher eine Zufallszahl pro Beitrag benötige, um die Fotos anzuzeigen?

Gibt es eine andere Möglichkeit, dies direkt in der Vorlage zu tun?

Aktualisiert

Danke für die Anleitung, die ich jetzt bekomme

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,   
            })
Nach dem Login kopieren

In der Vorlage

{{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}}
Nach dem Login kopieren

Auch ausprobiert

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

Aber leider wird die Vorlage nicht mehr ausgeführt, sobald ich anrufe

{{index $.Photos $idx}}
Nach dem Login kopieren

Ich glaube, das ist eine Art Tippfehler von meiner Seite?

Lösungselemente

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

Verwenden Sie $, um auf den „äußeren“ Rohwert zu verweisen, der an die Vorlagenausführung übergeben wird:

src="{{$.photo}}"
Nach dem Login kopieren

Obwohl dies nur eine Ganzzahl ist, möchten Sie sie möglicherweise in einem Pfad oder einer URL wie dieser verwenden:

src="/path/to/images?id={{$.photo}}"
Nach dem Login kopieren

Hinweis: Wenn Sie für alle Seiten unterschiedliche Bilder verwenden möchten, müssen Sie für jede Seite eine andere Nummer übergeben, nicht nur eine einzelne Nummer. Fügen Sie dann ein photo 字段,然后您可以在 {{range}} 中引用它,如原始代码中的 {{.photo}} zur Seite hinzu.

Sie haben geschrieben, dass Sie sie nicht ändern page,因为它来自您的数据库。如果是这样,则传递一段随机数并使用 index wie folgt aufrufen können:

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,
})
Nach dem Login kopieren

In der Vorlage:

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

Oder registrieren Sie eine random Funktion, die Sie über die Vorlage aufrufen können:

// 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")
Nach dem Login kopieren

Sie können es über eine Vorlage wie diese aufrufen:

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

Das obige ist der detaillierte Inhalt vonVerwenden von zufälligem Int für Fotos in der Go-Vorlage. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!