django wagtail需要指导吗

django wagtail需要指导吗,django,wagtail,Django,Wagtail,目前,我正在尝试将Wagtail与现有的django项目集成 我是wagtail的新手,还在学习wagtail class BlogPage(Page): body = RichTextField(blank=True) categories = ParentalManyToManyField('blog.BlogCategory', blank=True) location = models.ForeignKey('blog.Location', on_delete=models.PROTEC

目前,我正在尝试将Wagtail与现有的django项目集成

我是wagtail的新手,还在学习wagtail

class BlogPage(Page):
body = RichTextField(blank=True)
categories = ParentalManyToManyField('blog.BlogCategory', blank=True)
location = models.ForeignKey('blog.Location', on_delete=models.PROTECT)
然后我将类别和位置模型注册为代码片段

构建博客页面的最佳实践是什么 特定类别/位置

如何从django的菜单中调用该页面

或者,我可以在哪里找到将wagtail集成到现有django项目的文档


谢谢你

我想你正在寻找一个博客列表页面,在那里你可以列出你所有的博客文章,然后根据某个类别发布博客文章

您可能希望使用RoutablePageMixin(如果您不是使用Vue或React创建SPA)。RoutablePageMixin允许您自动创建其他子页面,而无需创建摇摆子页面

from wagtail.contrib.routable_page.models import RoutablePageMixin, route


class BlogListingPage(RoutablePageMixin, Page):
    """BlogListingPage class."""

    template = 'cms/blog/blog_listing_page.html'
    subpage_types = ['pages.BlogPage']

    # ... other fields here

    @route(r'^category/(?P<cat_slug>[-\w]*)/$', name='category_list')
    def category_list(self, request, cat_slug):
        """Return posts in a certain category."""
        context = self.get_context(request)
        posts = BlogPage.objects.live().filter(categories__slug=cat_slug).order_by('-pub_date')
        context['posts'] = posts
        return render(request, 'cms/blog/blog_category_page.html', context)
来自wagtail.contrib.routable_页面。模型导入RoutablePageMixin,路由
类BlogListingPage(RoutablePageMixin,第页):
“”“BlogListingPage类。”“”
模板='cms/blog/blog_listing_page.html'
子页面类型=['pages.BlogPage']
# ... 这里还有其他领域
@路线(r'^category/(?P[-\w]*)/$,name='category\u list')
def类别列表(自身、请求、cat slug):
“”“返回特定类别中的帖子。”“”
context=self.get\u context(请求)
posts=BlogPage.objects.live().filter(categories\uu slug=cat\u slug).order\u by('-pub\u date'))
上下文['posts']=posts
返回呈现(请求“cms/blog/blog\u category\u page.html”,上下文)
注意我没有测试此代码,您可能需要修复任何错误并根据需要调整此代码

上面的代码将获取您的博客列表页面(比如它的localhost:8000/blog/)并创建一个类别列表页面(即localhost:8000/blog/category/topic slug/)

topic slug
将被传递到
category\u list()
方法中,然后您可以根据博客页面所在的类别对其进行过滤。它会将
posts
添加到您的页面,并呈现不同的列表页面,您可以在其中自定义模板

我已经有一段时间没有检查过了,但是在那里可能有这样的例子(还有很多非常好吃的东西)


您也可以在上阅读更多关于Wagtail可路由页面的信息。

您可能想查看它有一个如何设置导航的示例。你的列表页面可以是一个新的页面类型,带有额外的上下文(提供列表项目的查询集),这里是一个例子,谢谢@allcaps,我将检查这个链接。还有一个问题是,是否可以在wagtail中使用基于类的视图来生成表单?wagtail位于Django顶部,因此您可以使用常规的Django路由和视图。但如果您希望它成为Wagtail页面树中的视图,则必须将Django表单添加到Wagtail页面上下文中。以同样的方式为列表或任何其他变量添加qs。谢谢Kalob,我将尝试应用此方法并检查引用。顺便问一下,是否可以在wagtail内部使用基于类的视图来创建CreateView?您是在/admin/内部还是在模板中创建CreateView?如果Wagtail是在admin中,那么它会提供帮助类来帮助您自定义所有这些。如果它在模板中,您可以使用
forms.Form
模型,并在
get\u context()
方法中添加表单(
context[“Form”]=YourForm(request.POST或None)
)。Wagtail在其
service()
方法中进行处理,因此请检查提交的帖子并在其中处理表单。类似于此,但使用基于类的视图