如何阻止某些单词在Django表单中使用?

时间:2019-09-12 06:52:26

标签: python django django-models django-forms

因此,我正在创建一个网站,用户可以在该网站上发布帖子,但是我想阻止某些单词在Django表单中使用。例如,我不希望他们提及CP或其他违法行为。如何阻止这些单词显示或向用户抛出错误消息

我还没有尝试过任何东西,但是我一直在研究,没有运气。

这里是帖子模型。

class Post(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=75)
    text = models.TextField(max_length=250)
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True,null=True,auto_now_add=True)
    tags = TaggableManager()

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def approve_comments(self):
        return self.comments.filter(approved_comment=True)

    def get_absolute_url(self):
        return reverse('mainapp:post_detail',kwargs={'pk':self.pk})

    def __str__(self):
        return self.title

这是表格

class PostForm(forms.ModelForm):
    class Meta():
        model = Post
        fields = ('title','text')
        widgets = {
            'title':forms.TextInput(attrs={'class':'textinputclass'}),
            'text':forms.Textarea(attrs={'class':'textareaclass'}),
        }

这是CreatePostView

class CreatePostView(LoginRequiredMixin,CreateView):
    login_url = '/login/'
    redirect_field_name = 'mainapp/post_details.html'
    form_class = PostForm
    model = Post
    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

我想要它,以便在包含被阻止的单词时引发错误 感谢您提供的任何帮助:)

1 个答案:

答案 0 :(得分:0)

我不知道是否能正确理解您,但是也许您正在搜索https://github.com/ReconCubed/django-profanity-filter

编辑。 您可以在wordlist.txt文件的列表中添加自己的“错误”单词