Lektor CMS: не удается заставить лектор-теги работать должным образом, запрошенный URL не найден на сервере
Я пытаюсь создать блог, используя
lektor CMS
, для этого .. мне нужна была система тегов , после поиска я нашел плагин lektor в документах lektor, который называется
Я следил за каждый шаг на документах, боролся много , и даже посетил GitHub репо , чтобы увидеть , если есть что - нибудь еще не включен в документах.
Моя проблема в том, когда я пытаюсь навестить
localhost:5000/{the_tag_name}
скажи, как будто я всегда слышу поговорку, что
Запрошенный URL не найден на сервере. Если вы ввели URL вручную, проверьте правописание и повторите попытку.
Вот что я делал до сих пор:
Перед использованием:
Я изменил маршрут для сообщений в блоге, чтобы они были
/posts
вместо/blog
.Добавлен формат слага в
models/blog.ini
в[children]
[children] model = blog-post order_by = pub_date, title slug_format = {{ (this.pub_date|dateformat('YYYY/M/') if this.pub_date) ~ this._id }}
Создал 3 поста, все работало исправно.
На этом этапе я хотел использовать систему тегов, поэтому решил использовать
lektor-tags
, что я сделал:
Монтаж
lektor plugins add lektor-tags
Созданный
configs/tags.ini
с этой конфигурацией:parent = / url_path = {{ this.parent.url_path }}{{ tag }} tags_field = tags ignore_missing = true template = tags.html
Созданный
templates/tags.html
со следующим содержанием:{% extends "layout.html" %} {% block title %}{{ this.title }}{% endblock %} {% block body %} <div class="container mt-3"> <b>Tag: {{ this.tag }}</b> <b>Items:</b> <ul> {% for i in this.items %} <li><a href="{{ i|url }}">{{ i._id }}</a></li> {% else %} <li><em>No items.</em></li> {% endfor %} </ul> </div> {% endblock %}
Отредактировано
models/blog-post.ini
и добавил:[fields.tags] type = strings
В
templates/blog-post.html
Я добавил следующее, чтобы показать ссылки на страницу, содержащую список всех сообщений с определенным тегом:{% if this.tags %} <ul> {% for t in this.tags -%} <li> <a href="{{ ('/' ~ t.lower())|url }}"> All posts tagged {{ t }} </a> </li> {% endfor %} </ul> {% endif %}
Наконец, я обновил сообщение, добавив несколько тегов от администратора, и убедился, что он есть в
content.lr
этого поста. поэтому я остановил сервер lektor dev и снова запустил егоlektor servor
без ошибок.
Ссылки были в сообщении для тегов, но когда я перехожу по ссылке, скажем, например, для тега python
localhost:5000/python
я получил
404 Not Found
. Я новичок в лекторе. мне интересно, что это такое и как я могу заставить это работать должным образом?
NB: другие плагины, которые я использовал,
lektor-minify
,
lektor-disqus-comments
документы для этих плагинов были простыми, и я не запутался, но когда дело дошло до этого конкретного плагина, я был сбит с толку, подчеркнул: документы были не такими уж хорошими и объясняющими, я чувствовал себя полностью потерянным
1 ответ
Так что в основном я делал это неправильно, потому что хотел использовать корень в качестве родителя в
tags.ini
вот так :
parent = /
Я закончил тем, что изменил выражение
'/blog@tag/' ~ t.lower()
в
blog-post.html
что-то вроде:
<a href="{{ ('/' ~ t.lower())|url }}">
делает невозможным создание исходного пути для каждого тега сообщения в блоге
Что я изменил и работал, так это :
Я выбрал
posts
чтобы быть родителем, обновилconfigs/tags.ini
к :parent = /posts url_path = {{ this.parent.url_path }}{{ tag }} tags_field = tags ignore_missing = true template = tags.html
Обновлено
templates/blog-post.html
:{% if this.tags %} <ul> {% for t in this.tags -%} <li> # '/posts@tag/' ~ t.lower() because i changed the route of blog to posts <a href="{{ ('/posts@tag/' ~ t.lower())|url }}"> All posts tagged {{ t }} </a> </li> {% endfor %} </ul> {% endif %}
После запуска
lektor clean --yes
тогда
lekor server
все работало правильно, включая систему тегов.