2016-05-02 9 views
1

Я пытаюсь опубликовать свои данные из формы в URL-адрес, называемый insert_data. Данные, которые формируют публикацию, должны вставляться в базу данных. После заполнения формы, когда я нажимаю кнопку «Отправить», появляется сообщение об ошибке. Я включил {% csrf_token%} в свою форму. Я ссылался на множество решений относительно этой ошибки, что не могло помочь.Запрещено (403) Ошибка CSRF. Request aborted

Forbidden (403) 
CSRF verification failed. Request aborted. 

urls.py:

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^chain$', views.chain, name='chain'), 
    url(r'^add$', views.add, name='add'), 
    url(r'^insert_order$', views.insert_order, name='insert_order'), 
] 

views.py

from django.shortcuts import render, render_to_response 
from .models import Customers 
from django.db import connection 

def add(request): 
    cursor = connection.cursor() 
    cursor.execute('''select polls_products.modelNumber, polls_products.description, polls_products.cost from polls_products;''') 
    results = cursor.fetchall() 
    x = cursor.description 
     resultsList = [] 
     for r in results: 
      i = 0 
      d = {} 
      while i < len(x): 
       d[x[i][0]] = r[i] 
       i = i+1 
      resultsList.append(d) 

    cursor1 = connection.cursor() 
    cursor1.execute('''select polls_employees.first_name, polls_employees.last_name from polls_employees;''') 
    results1 = cursor1.fetchall() 
    x = cursor1.description 
     resultsList1 = [] 
     for r in results1: 
      i = 0 
      d = {} 
      while i < len(x): 
       d[x[i][0]] = r[i] 
       i = i+1 
      resultsList1.append(d) 
    return render_to_response('polls/add.html', {"results1":resultsList1, "results":resultsList}) 

def insert_order(request): 
    print "came" 
    if request.method == "POST": 
      print request.POST['product'] 
      print request.POST['emp'] 

     return render(request, 'polls/index.html', {}) 

add.html

<h1>Add Orders</h1> 

<form action="{% url 'insert_order' %}" method="POST"> 
    {% csrf_token %} 
Product: <select name="product"> 
<option disabled="disabled" selected="selected">select product</option> 
    {% for r in results %} 

      <option value="{{r.key}}" >{{r.modelNumber}} {{r.description}} {{r.cost}}</option> 

    {% endfor %} 
</select> 
<br/><br/> 
Employee: <select name="emp"> 
<option disabled="disabled" selected="selected">select Employee</option> 
{% for r in results1 %} 
    <option value="{{r.key}}" >{{r.first_name}} {{r.last_name}} </option> 
{% endfor %} 
</select> 
<br/><br/> 
<h3>Customer Details</h3> 
First Name: <input type="text" id="fname" name="fname"> 
<br/><br/> 
last Name: <input type="text" id="fname" name="fname"> 
<br/><br/> 
City: <input type="text" id="fname" name="fname"> 
<br/><br/> 
State: <input type="text" id="fname" name="fname"> 
<br/><br/> 
Phone No: <input type="text" id="fname" name="fname"> 
<br/><br/> 
<input type="submit" value="Save Order"> 
</form> 

Пожалуйста, помогите. Я действительно застрял в этом вопросе.

+0

ли вы добавить контекст запроса? –

+0

Я использую функцию рендера. –

+0

взгляните на [это] (http://stackoverflow.com/questions/10388033/csrf-verification-failed-request-aborted?rq=1) – rocksteady

ответ

0

Если вы не используете аутентификации пользователей в приложение попытаться использовать Джанго декоратора @crsf_exempt

Ex:

from django.views.decorators.csrf import csrf_exempt 

@csrf_exempt 
def add(request): 
    ... 

@csrf_exempt 
def insert_order(request): 
     ... 
+0

Спасибо .. Я вышел из проверки csrf. Но я не получаю значения почтовых данных. Можете ли вы помочь –

+0

Чтобы проверить ваш запрос POST, просто используйте 'if request.POST:' и использовать 'request.POST.get ('product')' вместо 'request.POST ['product']' –

0

Вы должны использовать RequestContext(request) каждый раз вы используете renter_to_response

return render_to_response("login.html", {"registration_id":registration_id}, context_instance=RequestContext(request))

И вы должны импортировать аутентификацию и логин:

from django.contrib.auth import authenticate, login

В настройках обновления

SESSION_COOKIE_SECURE = True 
CSRF_COOKIE_SECURE = True 
SESSION_EXPIRE_AT_BROWSER_CLOSE = True 
MIDDLEWARE_CLASSES = [ 
    "django.middleware.csrf.CsrfViewMiddleware", 
    "django.middleware.common.CommonMiddleware", 
    "django.contrib.sessions.middleware.SessionMiddleware", 
    "django.contrib.auth.middleware.AuthenticationMiddleware", 
    "django.contrib.messages.middleware.MessageMiddleware", 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
] 

Пожалуйста, обратитесь https://docs.djangoproject.com/ja/1.9/ref/csrf/

+0

все еще я не получаю –

+0

Ссылка ссылается на то, что страница не найдена. Дайте некоторую рабочую ссылку. Я застрял. –

+0

Вы получили ответ –

Смежные вопросы