我有一个应用程序,在其中显示包含故事,视频和文章等内容的贡献者页面。 故事,视频和文章是不同的页面模型。
模板引擎:Jinja
框架:Django
CMS:ag
通过使用以下Ajax设置在urls.py中创建单独的视图和相应的url,我能够成功将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)
从console.log打印的URL
网址/ contributors / test-author / articles
无法加载资源:服务器响应状态为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] *)/ articles')<-此路由不适用于ContributorPage
ContributorPage提供类似/ contributor / author_name的URL,
当author_name为ContributorPage slug
我只想将/ articles附加到其中,以获得/ contributor / author_name / articles之类的路由
所以ContributorPage的正确路由是
@route(/ articles)
所以现在我的主要ContributorPage位于/ contributor / author_name
和
使用路由网址(如
)查询Ajax标签
/ contributor / author_name / articles
/ contributor / author_name / videos
/ contributor / author_name / stories
以及相应的路线,例如
@route(/ articles)
@route(/ videos)
@route(/ stories)