django wagtail需要指导吗
目前,我正在尝试将Wagtail与现有的django项目集成 我是wagtail的新手,还在学习wagtaildjango 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
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()
方法中进行处理,因此请检查提交的帖子并在其中处理表单。类似于此,但使用基于类的视图