2011-07-20 5 views
0

私はログインページを持っています。私の見解では、csrf_tokenタグのcsrfContext変数を渡しています。しかし、文脈にその変数以上のものを渡そうとすると、問題が発生します。たとえば、私が地元の人々を使用している場合(変数を渡す際のヘルプw/csrfContext

return render_to_response('base_index.html', locals()) 

私はcsrfエラーが発生します。私は明示的にcsrfContextとcsrfContextだけを渡す場合にのみ何らかの理由でそれが動作します。しかし、私はまた、他の変数を渡す必要があります。どのようにしてcsrfContextとそれらの変数を一緒に渡すことができますか?申し訳ありませんが、これは複雑な質問です。マイビューのコードは次のとおりです。

def index(request): 
    current = Module.objects.all() 
    error = "" 
    try: 
     error = request.GET["alert"] 
     if error == "failure": 
      error = "Woops! Something went wrong. Please try again." 
     elif error == "invalid": 
      error = "Invalid username/password." 
     else: 
      error = "Unknown Error. Please try again." 
    except: 
     pass 
    csrfContext = RequestContext(request, error, current) 
    return render_to_response('base_index.html', csrfContext) 

あなたは私がRequestContextのに変数を追加することで実験してきたが、私はテンプレートでそれらにアクセスする方法は考えている見ることができるように。

+0

は文字通りそれを考え出しましたこれを投稿してから数秒。 私はこれに私のreturn文を変更: 'リターンrender_to_response( 'base_index.html'、地元の人々()、csrfContext)' そして、それすべての作品! – pdeuchler

答えて

0

は私がreturn render_to_response('base_index.html', locals(), csrfContext)を使用し、それが働いた

0

このようにlocals()を使用することはお勧めできません。より複雑なビューでは、必要なテンプレートレンダリングにもっと多くのものを渡すことになります。

これを行うには良い方法はRequestContextの作成、およびいずれかの追加したい値を渡し、または後にそれらを追加することです:https://docs.djangoproject.com/en/dev/ref/templates/api/#django.template.Context

関連する問題