2016-09-05 95 views
0

当我尝试在我的django框架中呈现到我的第二页时,出现以下错误。我认为这有什么不对我的URL页面和views.py的,但不能弄清楚,什么给了向前迈进了一步..禁止(CSRF令牌丢失或不正确)。Django + AngularJs

Forbidden (CSRF token missing or incorrect.): /renderbonds 
[06/Sep/2016 00:21:55] "POST /renderbonds HTTP/1.1" 403 2502 

这是我的HTML/Django的形式

<form action="{% url 'renderbonds'%}" method="post" > 
       <input type="submit" value="calculate bonds" class='button expand radius'/> 
      </form> 

Views.py Python文件:

def home(request): 
    tmpl_vars = { 
     'all_posts': Post.objects.reverse(), 
     'form': PostForm() 
    } 
    return render(request, 'pricing/bonds.html', tmpl_vars) 

def renderbonds(request): 
    """render shortcut : http://stackoverflow.com/questions/10388033/csrf-verification-failed-request-aborted""" 
    if request.method == 'POST': 
     post_text = request.POST.get('the_post') 
     response_data = {} 

     post = Post(text=post_text, author=request.user) 
     post.save() 

     """DATA MEEGEVEN""" 
     response_data['year'] = post.year 
     response_data['cashflow'] = post.cashflow 

     return HttpResponse(
      json.dumps(response_data), 
      content_type="application/json" 
     ) 
    else: 
     tmpl_vars = { 
      'all_posts': Post.objects.reverse(), 
      'form': PostForm() 
     } 
     return render(request,'pricing/bonds.html', tmpl_vars) 

我的网址:

urlpatterns = [ 
    url(r'^$', views.calc,name='calc'), 
    url(r'^$', views.home,'home'), 
    url(r'^create_post/$',views.create_post,'create_post'), 
    url(r'^renderbonds', views.home, name='home'), 
    url(r'^/renderbonds', views.home, name='home'), 
    url(r'^renderbonds/', views.home, name='home') 

] 
+0

我看到你在评论中提出了一个问题。查看我更新的答案,了解标签的放置位置。 – elethan

回答

2

问题不在于您的网址或您的观点,而在于您的模板。尝试在模板中添加嵌套在您的<form></form>标签下的{% csrf_token %}

<form action="{% url 'renderbonds'%}" method="post" > 
    <input type="submit" value="calculate bonds" class='button expand radius'/> 
    {% csrf_token %} 
</form> 

查看the docs了解更多详情。

相关问题