1

Python DJango で POST メソッドを動作させようとしています。しかし、CSRF の実装では成功しませんでした。

これが私の Views.py の内容です

def showTime(request):      
    t = get_template('FR/current_datetime.html')
    htmlContent = t.render(Context({"day_list": ['wednesday','thursday','friday'] , "current_date": datetime.datetime.now()} ))
    return HttpResponse(htmlContent)

def showWeekEnd(request):           
   c = {}
   c.update(csrf(request))
   if request.method == 'POST':
       return render_to_response('EN/current_datetime.html', c)

私のURLパターンは

url(r'^showTime/$', showTime),
    url(r'^$', showTime),
    url(r'^showWeekEnd/$', showWeekEnd),

私も有効にしました

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

私は (EN/current_datetime.html) を持っています

<form action="/showWeekEnd/" method="post">{% csrf_token %} 

このために私は得ています

TypeError: csrf() takes exactly 1 argument (0 given)

これ以上パラメーターを渡さなければならない場合は、「サーバー エラーが発生しました。管理者に連絡してください」というメッセージでアプリケーション自体を起動すると、このエラーが発生します。

何がうまくいかなかったのか説明してください。

4

3 に答える 3

0

これを行う:

#settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
    ...,
    'django.core.context_processors.csrf',)

ビューで、手動で追加する代わりに csrf デコレータを使用します。

from django.views.decorators.csrf import csrf_protect
from django.template import RequestContext

@csrf_protect
def showWeekEnd(request):
    c = RequestContext(request)
    return render_to_response('EN/current_datetime.html', c)
于 2013-08-01T11:31:41.677 に答える