Django 学习笔记(3)

新博客地址:http://gorthon.sinaapp.com/

实现fibonacci数列(1,1,2,3,5,8,13,21,34,55,...)

1. newtest目录新建fibonacci.py 

# _*_ coding:cp936 _*_
from django.http import HttpResponse

html = '''<form method="post" action="/fibonacci/">
<input type="text" name="a" value="%d">
<input type="submit" value="%s">
<input type="text" value="%s">
</form>'''

fib = lambda n:(n == 1 or n == 2) and 1 or fib(n-1) + fib(n-2)

def index(request):
    tmp = ''
    if request.POST.has_key('a'):
        a = int(request.POST['a'])
    else:
	a = 1
    for i in range(1,a+1):
 	tmp += str(fib(i)) + ','
    return HttpResponse(html % (a,u'计算', tmp)) 

2. urls.py添加映射(注意末尾的逗号):

(r'^fibonacci/$','newtest.fibonacci.index'),

3. 浏览器输入网址http://127.0.0.1:8000/fibonacci/

若出现下面问题:

##########################################################################

Forbidden (403)

CSRF verification failed. Request aborted.

Help

Reason given for failure:

    CSRF token missing or incorrect.
    

In general, this can occur when there is a genuine Cross Site Request Forgery, or when
Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:

  • The view function uses RequestContext for the template, instead of Context.
  • In the template, there is a {% csrf_token %} template tag inside each POST form
    that targets an internal URL.
  • If you are not using CsrfViewMiddleware, then you must use csrf_protect on any
    views that use the csrf_token template tag, as well as those that accept the POST data.

You're seeing the help section of this page because you have DEBUG = True in your Django
settings file. Change that to False, and only the initial error message will be displayed.

You can customize this page using the CSRF_FAILURE_VIEW setting.

##########################################################################

要到newtest目录下面的settings.py中查找MIDDLEWARE_CLASSES按照格式添加两行(注意末尾的逗号

'django.middleware.csrf.CsrfResponseMiddleware',
'django.middleware.csrf.CsrfViewMiddleware', 

再次访问http://127.0.0.1:8000/fibonacci/,输入一个正数,然后看结果。

你可能感兴趣的:(django,input,lambda,token,CSRF,Forms)