wagtail 如何在自定义后台页面的上面添加可勾选字段选项
时间: 2024-05-01 19:22:25 浏览: 131
wagtail-django-recaptcha:用于Wagtail表单页面的简单Recaptcha字段
要在 Wagtail 的自定义后台页面上面添加可勾选字段选项,可以按照以下步骤进行操作:
1. 在你的 app 中创建一个 `models.py` 文件,并定义一个继承自 `Page` 的模型类,例如:
```python
from django.db import models
from wagtail.core.models import Page
class MyPage(Page):
my_field = models.BooleanField(default=False)
```
在这个模型类中,我们添加了一个名为 `my_field` 的布尔类型 (BooleanField) 字段。
2. 接下来,在你的 app 中创建一个 `wagtail_hooks.py` 文件,并在其中编写一个继承自 `PageRoutableMixin` 的钩子类,例如:
```python
from wagtail.contrib.modeladmin.options import modeladmin_register
from wagtail.contrib.modeladmin.mixins import PageRoutableMixin
from wagtail.core import hooks
class MyPageAdmin(PageRoutableMixin, hooks.ModelAdmin):
model = MyPage
list_display = ('title', 'my_field')
list_filter = ('my_field',)
modeladmin_register(MyPageAdmin)
@MyPageAdmin.route(r'^my-custom-view/$', name='my_custom_view')
def my_custom_view(request):
# 在这里添加你想要展示的自定义页面内容
return render(request, 'my_custom_template.html')
```
在这个钩子类中,我们定义了一个名为 `MyPageAdmin` 的模型管理器 (ModelAdmin),并在其中注册了我们之前定义的 `MyPage` 模型类。我们还添加了一些用于模型管理器的配置选项,例如 `list_display` 和 `list_filter`。最后,我们在钩子类中定义了一个自定义视图 `my_custom_view` 并为它指定了一个 URL 路由。
3. 接下来,在你的 app 中创建一个名为 `my_custom_template.html` 的模板文件,并在其中编写你想要展示的自定义页面内容。
4. 最后,在 Wagtail 的后台管理页面中,打开 `Settings -> Snippets` 页面,并创建一个名为 `MyPageFields` 的新的 Snippet,例如:
```python
from django.db import models
class MyPageFields(models.Model):
my_field = models.BooleanField(default=False)
panels = [
FieldPanel('my_field'),
]
class Meta:
abstract = True
```
在这个 Snippet 中,我们定义了一个名为 `my_field` 的布尔类型 (BooleanField) 字段,并将它添加到了一个名为 `panels` 的列表中。这个列表中的内容将用于在我们之后创建的自定义页面中显示可勾选字段选项。
5. 最后,在你的 app 中创建一个名为 `my_page_fields.py` 的文件,并在其中编写一个继承自 `MyPageFields` 的类,例如:
```python
from wagtail.snippets.models import register_snippet
from .models import MyPageFields
@register_snippet
class MyPageFieldsSnippet(MyPageFields):
pass
```
在这个类中,我们注册了之前创建的 `MyPageFields` Snippet,并创建了一个新的 `MyPageFieldsSnippet` 类来使用它。
完成以上步骤后,你就可以在 Wagtail 的自定义页面中展示可勾选字段选项了。在页面编辑界面中,你会发现一个名为 `My Page Fields` 的选项卡,里面包含了一个可勾选的 `my_field` 字段。在你的自定义页面中,你可以通过访问 `request.site.root_page.my_custom_view()` URL 来展示你之前创建的自定义页面。
阅读全文