Heim  >  Artikel  >  Backend-Entwicklung  >  Verwenden von zufälligem Int für Fotos in der Go-Vorlage

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

WBOY
WBOYnach vorne
2024-02-10 09:09:09869Durchsuche

在 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,
            })

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>

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,   
            })

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}}

Auch ausprobiert

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

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

{{index $.Photos $idx}}

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}}"

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}}"

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,
})

In der Vorlage:

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

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")

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

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen