У меня есть приложение, в котором я отображаю страницу участника с таким контентом, как истории, видео и статьи.Истории, видео и статьи - это разные модели страниц.
шаблонизатор: Jinja
фреймворк: Django
CMS: wagtail
Я могу загрузить ajaxсодержимое на вкладке успешно, создав отдельное представление и соответствующий URL в urls.py с настройками ajax ниже.
Но если я попытаюсь использовать функцию страницы Wagtails с маршрутизацией, я получу 404.
Выдержка настроек Ajax:
settings = jQuery.extend(true, {}, {
type: 'get',
dataType: 'json',
url: vUrl,
beforeSend: function (jqXHR, settings) {
console.log(`URL ${settings.url}`)
$tab.html('<br>');
$paneHeader.removeClass(css).addClass(css);
$el.trigger('tabsX:beforeSend', [jqXHR, settings]);
},
success: function (data, status, jqXHR) {
setTimeout(function () {
// $tab.html(data); //Use Json data instead of html
$tab.html(data.html);
$pane.tab('show');
$paneHeader.removeClass(css);
}, 300);
},
error: function (jqXHR, status, message) {
$paneHeader.removeClass(css);
},
}
@route(r'^/contributors/(?P<slug>[-\w]*)/articles')
def show_articles_contributed(self, request):
if request.is_ajax():
print("Inside AJAX")
articles = Contributor.get_articles_by_authors(self.id)
html = render_to_string("organisms/latest_articles.html", {"objects": articles})
return JsonResponse({"html": html}, safe=True)
else:
return super(ContributorPage, self).serve(request)
URL-адрес, напечатанный из console.log
URL / contributors / test-author / article
Не удалось загрузитьресурс: сервер ответил со статусом 404 (не найдено)
class ContributorPage(RoutablePageMixin, PhoenixPage):
first_name = models.CharField(max_length=255, blank=True, default="")
last_name = models.CharField(max_length=255, blank=True, default="")
nickname = models.CharField(max_length=1024, blank=True, default="")
PhoenixPage - это не что иное, как базовая страница с метаданными, которая фактически использует базовый класс Wagtail Page.
Буду признателен за любую помощь / руководство.
Если вопрос неясен, я могу предоставить больше информации.
Спасибо
Я обнаружил проблему.
Размещение описания для будущих пользователей.Иторы этой темы.
Код Ajax здесь не являлся проблемой, но реализация маршрута Wagtail была.
@ route (r '^ / contributors / (? P [- \ w] *) / article ') <- этот маршрут не является правильным для ContributorPage <br>
ContributorPage дает URL-адрес как / contributor / author_name, в то время как author_name является слитом ContributorPage
Я просто хочу добавить / статьи к нему, чтобы получить маршрут вроде / contributor / author_name / article
, поэтому правильный путь для ContributorPage -
@route (/ article)
Так что теперь моя главная страница ContributorPage находится по адресу / contributor / author_name и
Запросы Ajax запрашиваются с использованием URL-адресов маршрутов, например,
/ contributor / author_name /статьи
/ contributor / author_name / videos
/ contributor / author_name / Stories
с соответствующим маршрутом, например,
@route (/ articles)
@route (/ videos)
@route (/ Stories)