2016-09-05 94 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瞭解更多詳情。

相關問題