Hello,
I would like to display a random image each time a page is refreshed. I think my random function works, but the image does not appear on the page. I have this template:

```
/public
    /images
        /rndimg
            img1.jpg
            img2.jpg
            img3.jpg
/source
    app.d
/views
    index.dt
```

index.dt:

```
doctype html

html(lang="en")
    head
        meta(charset="UTF-8")
meta(name="viewport", content="width=device-width, initial-scale=1.0")
        meta(http-equiv="X-UA-Compatible", content="ie=edge")
        title Document
    body
        img(src='#{rndimg}')
```

And the code itself is:

```
import vibe.vibe;

void main()
{
        auto settings = new HTTPServerSettings;
        settings.port = 8080;
        settings.bindAddresses = ["::1", "127.0.0.1"];
        auto listener = listenHTTP(settings, &index);
        scope (exit)
                listener.stopListening();

        logInfo("Please open http://127.0.0.1:8080/ in your browser.");
        runApplication();
}

/// The index page
void index(HTTPServerRequest req, HTTPServerResponse res)
{
        import std.random;
        import std.format;
        
        auto rnd = Random(unpredictableSeed);
        auto a = uniform(1, 3, rnd);
        const auto rndimg = format("images/rndimg/img%d.jpg", a);

        res.render!("index.dt", req, rndimg);
}
```

I don't understand why the image doesn't display, when I take an image from the internet and give the url, it works fine though.

Also, is this a good way to randomly display an image or is there a way that is maybe cleaner/efficient?

Thank you.

Reply via email to