これは他の問題とは違うと思いますが、私は答えをチェックしましたが、まだ運がありません。助けてくれてありがとう:Djangoのコメント - AjaxとCSRFの失敗
私はニュースアイテムのリスト(facebookフィードのようなもの)があり、それぞれに(django.contrib.commentsアプリを使って)コメントフォームが添付されています。それは正常に正常に動作します。
しかし、私はAJAXの「無限のスクロール」をページ上に使用しています。スクロールすると、AJAXを介して次のニュース項目と関連コメントフォームが読み込まれます。新しくロードされたニュース項目のコメントフォームは機能しません(CSRF検証に失敗します)。
戻ってくるJSON応答に{%csrf_token%}が渡されないので、新しく読み込まれたコメントフォームにはCSRFデータがありません。
私はDjangoページ(https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/#ajax)でCookie設定メソッドを使用しようとしましたが、動作していないようです。 CSRFを完全に除外するために@csrf_exemptデコレータを試してもいません。
戻ってくるJSONレスポンスとともにcsrf_tokenをどのように渡すことができますか?あるいは代替手段がありますか?ここで
はビューです:
def my_view(request):
# the normal view gets a queryset of all Info items and returns them
infos = Info.objects.all()
....
# here's the AJAX part
if request.GET.get('xhr') and page > 1:
infos = paginator.page(int(request.GET.get('page')))
objects_list = []
for object in infos:
objects_list.append(render_to_string('list/snippets/feed_li.html', {
'object': object,
}))
json = simplejson.dumps(objects_list, cls=DjangoJSONEncoder)
return HttpResponse(json, mimetype='application/json')