1

http://code.google.com/p/django-simple-captcha/をdjangoコメントで使用する方法を理解しようとしています。私はここで説明されているようにすべてを行いました:http: //docs.djangoproject.com/en/dev/ref/contrib/comments/custom/

したがって、カスタムコメントアプリのフォームは次のようになります。

from django import forms
from django.contrib.comments.forms import CommentForm
from captcha.fields import CaptchaField


class CommentFormWithCaptcha(CommentForm):
    captcha = CaptchaField()

    def get_comment_model(self):
        # Use our custom comment model instead of the built-in one.
        return Comment

そして私の__init__.pyファイル:

from protected_comments.forms import CommentFormWithCaptcha

def get_form():
    return  CommentFormWithCaptcha

キャプチャフィールドはレンダリングされますが、入力が有効かどうかを確認する方法がわかりません。例:simple-captchadocsは次のように述べています

if form.is_valid():
            human = True

しかし、これをどこに追加できるのかよくわかりません。オーバーライドできるメソッドがforms.pyにありますか?

4

2 に答える 2

2

protected_commentsドキュメントで指定されているように、アプリをsettings.pyファイルに正しく追加したと仮定します。

INSTALLED_APPS = [
    ...
    'protected_comments',
    ...
]

COMMENTS_APP = 'protected_comments'

次に、コメントフォームをレンダリングすると、POST先のフォームを示すデフォルトのURLが配置されます。ここcontrib.commentsでデフォルトのURLconfを確認できます。

投稿されたコメントを処理するためのデフォルトのビューは、カスタムかどうかに関係なく、すでにフィールドを通過し、それらが有効であることを確認します。追加する必要があるのは次のとおりです。

if form.is_valid():
    human = True

これがキャプチャを追加するカスタムアプリである場合、ビュー関数はまだ作成されてcontrib.commentsいません。

だからあなたは大丈夫です、キャプチャはあなたがすでに書いたものでそれ自体を検証します。確認のためにデモプロジェクトでテストしました。

于 2010-10-05T17:07:42.433 に答える
-1

楽しみのためだけにこれを実装しようとしている場合。申し訳ありませんが、私はあなたの問題の解決策を持っておらず、さらに読む必要はありません。

それ以外の場合は、代わりにDisqusを使用することをお勧めします。これにより、時間とメンテナンスの問題を大幅に節約できます。Django-Disqusを試してください。

また、DanielRosemanからDisqusに移行した理由についてのブログ投稿がありました。

于 2010-10-05T16:08:11.997 に答える