用于 bbcode 输入的自定义 django 管理表单

发布于 2024-12-05 07:09:41 字数 411 浏览 3 评论 0原文

我正在编写Django网站,我想使用内置的管理界面来允许管理员编辑某些内容。因此,他们不必学习任何HTML,我希望他们能够使用简单的bbcode标签格式化内容。

我已经写了一对函数,以将BBCode转换为tor html标记。称它们为HTML2BBCODE和BBCODE2HTML。

基本上,我需要以下内容:

  • 要通过HTML2BBCODE从数据库中传递HTML,以便在管理员编辑表格中向BBCODE进行外交。
  • 在管理员进入数据库之前,当管理员按“保存”时,通过BBCode2HTML从admin表单传递BBCODE。
  • 在实际构成网页的一部分时,能够将内容检索为HTML。

在将结果保存在数据库中(反之亦然)之前,我找不到如何通过自定义函数传递输入的任何地方。谁能向我指向正确的方向?

I'm writing a django website, and I want to use the built in admin interface to allow admins to edit some of the content. So they don't have to learn any html, I want them to be able to format the content using simple bbcode tags.

I've written a pair of functions to convert bbcode to and from html markup. Call them html2bbcode and bbcode2html.

Basically, I need the following:

  • to pass the html from the database through html2bbcode so that bbcode is diplayed in the admin editing forms.
  • to pass the bbcode from the admin form through bbcode2html when the admin presses 'save', before it goes into the database.
  • to be able to retrieve the content as html when its actually going to form part of a webpage.

I cannot find out anywhere how to pass the input from the admin interface through a custom function before saving the result in a database (or vice versa). Can anyone point me in the right direction?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

握住你手 2024-12-12 07:09:41

您的模型中可以有两个单独的字段 - 一个用于 html,一个用于 bbcode。使 html 不显示在管理界面中(通过使用 ModelAdmin 类的排除属性),这样您的管理员只能看到和编辑 bbcode 字段。您可以通过覆盖模型的保存方法来获取 html 内容 - 将 bbcode2html 函数放在那里。类似的内容:

def save(self, *args, **kwargs):
    self.html = bbcode2html(self.bbcode)
    super(MyModel, self).save(*args, **kwargs)

有关自定义管理界面的文档:
https://docs.djangoproject.com/en/dev/ref/contrib/管理员/

You could have two separate fields in you model - one for html and one for bbcode. Make the html one not show up in the admin interface (by using the exclude property of the ModelAdmin class), so your admins only see and edit the bbcode field. You can get the html content by overriding the model's save method - place your bbcode2html function there. Something along these lines:

def save(self, *args, **kwargs):
    self.html = bbcode2html(self.bbcode)
    super(MyModel, self).save(*args, **kwargs)

Documentation on customizing the admin interface:
https://docs.djangoproject.com/en/dev/ref/contrib/admin/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文