2011-01-30 3 views
1

私はdjango-threadedcommentsを使用しています。 csrfトークンとユーザーテンプレートタグの2つ以外はすべて正常に動作します。Threadedcomments - csrf tokenとuser_name

ユーザーがコメントを送信すると、フォームのcsrfトークンがないため、フォームをサーバー側で検証できませんでした。辞書にcsrfトークンを追加しようとしましたが、threaded-commentsは結果のない内部を渡します。 (このメソッドは3つの引数で2つの引数しか取らないと伝えています)。 3つの引数を受け入れるようにこれらのメソッドを修正しようとしました。失敗。

誰かが過去に同じ問題につまずいて解決しましたか?

MIDDLEWARE_CLASSES = (
    #'django.middleware.csrf.CsrfViewMiddleware', 
) 

第2の1つ - コメントを投稿したユーザーのuser_idを取得するためのHTMLヘルパーがあります。 idのユーザー名を取得するためのボックスヘルパーがありますか?それとも自分で書かなければなりませんか?ここで

http://code.google.com/p/django-threadedcomments/

は、プロジェクトのコードですが、私は本当に私はプロジェクト全体へのリンクを与えるので、それのチャンクがここに掲載されなければならないかを正確に伝える傾けます。

私は本当にここにこだわっていて、どんな助けも歓迎されます。

ありがとうございます。

+0

コメントフォームをどのように表示しますか?ビューの応答に含めたり、templatetagを使用したりしますか? –

+0

templatetag – Ruslan

+0

を使用すると、フォーム内にcsrf_tokenをレンダリングするためにthreadedcommentsのtemplate_tagsコードをハックする必要があります –

答えて

1

はスレッド・コメントない結果に内部通過 辞書にCSRFトークンを追加しようとしたビューに{% csrf_token %}タグまたは@csrf_protectを使用する必要があります。

csrf_tokenはテンプレートタグです。引数として渡すべきではありません。

私はthreadedcommentsを見ました。これはcontrib.commentsに基づいており、HTMLレンダリングは行われていませんので、テンプレートにcsrf_tokenを挿入する必要があります。

フォームコードを表示しているTEMPLATEコードは何ですか?

CsrfViewMiddlewareを有効にしていて、閲覧中にRequestContextを使用している場合は、<form></form>タグの内に{% csrf_token %}を追加するだけです。ユーザー名取得するよう


ThreadedCommentname性質を持っているCommentのサブクラスである、またはあなただけの直接Userにアクセスすることができました...

{% for comment in comments % 
    {{ comment.user.first_name }} 
    {{ comment.name }} 
{% endfor %} 
1

あなたは

+0

{%csrf_token%}タグが使用されるたびに、呼び出されたビューによって提供される必要があります。辞書にcsrfトークンを追加しようとしましたが、threaded-commentsは結果のない内部を渡します。 (このメソッドは3つの引数で2つの引数しか取らないと伝えています)。 3つの引数を受け入れるようにこれらのメソッドを修正しようとしました。失敗。 – Ruslan

+0

デコレータメソッドを使用しようとしましたか? – errx

+0

btw:なぜCsrfViewMiddleWareを使いたくないのですか? – errx

-1

あなたのフォームを置くことができます独自のテンプレートで{% include %}をページテンプレートに追加します。 Django 1.3以降、{% include %}はインクルードされたテンプレートにコンテキスト変数を渡すことができます。ここで私が代わりにtemplatetagのdjango.contrib.commentsを使用してんだよ。それはあなたのメインビューのコンテキストを使用していますので、この中

... 
{% include "comments/comment-form.html" with content_object=article user=request.user %} 
... 

{%csrf_token %}作品はテンプレートが含まれています。

関連する問題