What is the correct way to express a path in order to get Pelican generated html to link to an image?

懵懂的女人 提交于 2019-12-12 18:48:32

问题


I'm just starting to create a blog with Pelican and wanted to link to an image. I did this by including the following line in my Markdown file:

<img src="./myImg1a.png" alt="./myImg.png" style="width: 750px; height: 800px;"/>

This line was successfully reproduced in the html file, which Pelican placed in the output directory (i.e. /myBlog/output). I placed the png files in the output directory (i.e. the same directory as the html files and got the following error:

WARNING:root:Unable to find file /category/myImg1a.png/index.html or variations. 

where /category refers to myBlog/output/category. When I, instead, used the following html code:

<img src="/myImg1a.png" alt="/myImg.png" style="width: 750px; height: 800px;"/>

everything worked fine. I don't understand why this should be:

  1. If the image file is in the same directory as the html file, shouldn't "./myImg1.png" be correct and "/myImg.png" be incorrect?

  2. Why was the folder /category/myImg1a.png/index.html being sought at all?


回答1:


First of all, by design, you should not change the contents of the output directly/manually.
You should put all your static contents in separate directory which is usually named as images or paths. And, then configure the path(s) in pelicanconf.py as:

# ...
PATH = 'content'
STATIC_PATHS = ['images', 'files']  # add any no. of locations
# ...

In that case, when Pelican is building actual page, it will look for any referenced static file in ./content/images and ./content/files locations. If cannot find there, it will emit the error message.

Now, answering to your trouble ...

By,

... src="./myImg1a.png" ...

Pelican look for this myImg1a.png file in your myBlog/content/ folder as you are mentioning ./ which is the root folder for Pelican is working on.

But, when you are referring it as

... src="/myImg1a.png" ...

Pelican eventually finds it in the html file's directory. By getting / as location, Pelican is looking for it in the same directory of your myblog/my-blog-post/index.html which is myblog/my-blog-post/.
Hence, working. But not in the ideal way.

For a deeper understanding, please take a look into Pelican's documentation on this matter.

  1. Why was the folder /category/myImg1a.png/index.html being sought at all?

Pelican, here, just trying to be smart.



来源:https://stackoverflow.com/questions/28257113/what-is-the-correct-way-to-express-a-path-in-order-to-get-pelican-generated-html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!