私は次のエラー受け取る:今イムはちょうどCSRF_Token不足しているエラーメッセージを修正しようとするためにフラスコ - 私は私のフォームを送信しようとするたびにCSRF_TOKEN行方不明のエラー
{'department': [u'Not a valid choice'], 'email': [u'This field is required.'], 'csrf_token': ['CSRF token missing'], 'name': [u'This field is required.'], 'address': [u'This field is required.']}
を。しかし、私はまた私の設定が正しいことだと思う
<form enctype="multipart/form-data" action="/index" method="post" role="form"> <!-- how the data is obtained from the form (POST method) -->
{{ form.csrf_token }}
<div class="form-group">
<label style="margin-top: 10px;" for="name">Name:</label>
{{ form.name(class_="form-control") }} <!-- this creates the name form field -->
<br>
<label for="address">Address:</label>
{{ form.address(class_="form-control", rows='5', cols='40') }} <!-- this creates the adress form field -->
<br>
<label for="email">E-mail Address:</label>
{{ form.email(class_="form-control") }}
<br>
<label for="telephone">Phone Number: </label>
{{ form.telephone(class_="form-control") }}
<br>
<label for="file_upload">Upload CV: </label>
{{ form.file_upload(class_="form-control") }}
<br>
<label for="Department">Department:</label>
{{ form.department(class_="form-control")}}
<br>
</select>
</div>
<button name="submit" type="submit" class="btn btn-primary">Submit</button> </form> <!-- submit button -->
...なぜこれが起こっているので、私は理解していないよ、私のテンプレートにCSRFトークンタグを持っている...私は
WTF_CSRF_ENABLED = True
SECRET_KEY = 'this-is-a-secret-key'
をしないのです何か?助けてくれてありがとう!
EDIT:(!混乱のため申し訳ありませんが、初心者)ここで要求されたようで、私のconfigです
from flask import Flask, render_template, session, flash, request, redirect, url_for
from flask_wtf import Form
from flask_sqlalchemy import SQLAlchemy
from werkzeug.utils import secure_filename
from wtforms import TextField, TextAreaField, validators, StringField, SubmitField, BooleanField, RadioField, SelectField, FileField, IntegerField
from .forms import ApplicationForm, DataRequired
import os
import re
import sqlite3
from flask_wtf.csrf import CsrfProtect
SECRET_KEY = 'you-will-never-guess'
#configuration
DEBUG = True
app = Flask('Application')
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///applicants.sqlite3'
app.config.from_object(__name__)
from app import views
CsrfProtect(app)
WTF_CSRF_ENABLED = True
DEBUG = True
UPLOAD_FOLDER = '/Uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
FILE_TYPES = set(['txt', 'doc', 'docx', 'odt', 'pdf', 'rtf', 'text', 'wks', 'wps', 'wpd'])
def application():
form = ApplicationForm(request.form)
return render_template('index.html','home.html', form=form)
db = SQLAlchemy(app)
class Applicants(db.Model):
id = db.Column('applicant_id', db.Integer, primary_key = True)
name = db.Column(db.String(100))
address = db.Column(db.String(200))
telephone = db.Column(db.String(15))
email = db.Column(db.String(100))
department = db.Column(db.String(30))
file_upload = db.Column(db.Boolean)
def __init__(self, name, address, telephone, email, department, file_upload):
self.name = name
self.address = address
self.telephone = telephone
self.email = email
self.department = department
self.file_upload = file_upload
db.create_all()
if __name__ == "Application":
app.run()
form.csrfより 'form.hidden_tag'をお試しください。 http://stackoverflow.com/a/21501593 – Erik
設定オブジェクトを表示できますか?それをあなたのアプリにどのように渡しますか? – ettanany
@エリックはそれを試しましたが、hidden_tagとcsrf_tokenは私が信じているものと同じ/同様のことをするので、何も変わっていませんでした。 –