저는 Flask Session을 실행 중이며 Eve를 API로 사용하고 있습니다. 세션 코드를 위해 나는 나는 이브 API가/API를 아래에, 나는 적어도 그 요청에 대해 새로운 세션을 시작하지 않도록하려면 여기 https://pythonhosted.org/Flask-Session/함수 내에서 Flask로 세션을 시작할 수 없습니다.
from flask import Flask, session
from flask.ext.session import Session
app = Flask(__name__)
# Check Configuration section for more details
SESSION_TYPE = 'redis'
app.config.from_object(__name__)
Session(app)
@app.route('/set/')
def set():
session['key'] = 'value'
return 'ok'
@app.route('/get/')
def get():
return session.get('key', 'not set')
의 예를 다음과 같은거야.
request.environ [ 'PATH_INFO']이 '/ api /'로 시작하지 않을 때만 세션을 시작하고 싶을 때마다 Session()을 넣을 때마다 실패합니다. 예 다음
:
sess = Session()
sess.init_app(app)
내가 before_request 또는 유사한에서, 나는이 얻을 수행하려고 : 나는 정상적인 컨텐츠 생성에 세션을 시작하려고하면
A setup function was called after the first request was handled.
및 얻을 수있는 것 :
AttributeError: 'SecureCookieSession' object has no attribute 'sid'
경로/환경/etc에 따라 세션을 조건부로 시작할 수 있습니까? ?
import flask
import xml.etree.ElementTree as ElementTree
from bson.objectid import ObjectId
from random import shuffle, choice as pick
from cgi import escape as escapehtml
from time import mktime
from urllib import quote as escapeurl, unquote_plus as unescapeurl
from flask import Flask, request, session, render_template, send_from_directory, jsonify, redirect, abort
from flask.ext.session import Session
from flask.ext.login import LoginManager, login_user, logout_user, current_user, UserMixin, user_logged_in, login_required, fresh_login_required
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadSignature, SignatureExpired, URLSafeTimedSerializer
from flask_mail import Mail, Message
from wtforms import Form, BooleanField, PasswordField
from flask.ext.mongoengine import MongoEngine
from flask.ext.security import Security, MongoEngineUserDatastore, RoleMixin, UserMixin
from flask.ext.principal import Principal, Permission, RoleNeed
from flask_security.forms import RegisterForm, Required, StringField
from flask_images import Images
from eve import Eve
from eve.auth import TokenAuth
from flask.ext.moment import Moment
from eve.io.mongo import Validator
from flask.ext.cors import CORS, cross_origin
from app.admin.one1 import one1
from app.emails.emails import emails
from app.alligator.alligator import alligator
from app.data.ndm_feed.ndm_feed import ndm_feed
from flask.ext import excel
...
login_serializer = URLSafeTimedSerializer(app.secret_key)
login_manager = LoginManager()
app.config.from_object(__name__)
login_manager.init_app(app)
Session(app)
나는이 같은 일을하려고 API 호출에 대한 세션을 시작 피하기 위해 :
나의 현재 코드는 다음과 같습니다
@app.before_request
def before_request():
if not request.environ['PATH_INFO'].startswith('/api/'):
Session(app)
또는 동등 :
@app.before_request
def before_request():
if not request.environ['PATH_INFO'].startswith('/api/'):
sess = Session()
sess.init_app(app)
하지만 위의 오류없이 수행 할 수있는 방법을 찾을 수 없습니다.
경로/환경/기타에 따라 조건부로 Flask 세션을 시작할 수 있습니까?
감사합니다. 이 경우에는 내가 현재 청사진을 통해 이브를 실행할 수 있다고 생각하지 않지만 https://github.com/nicolaiarocci/eve/issues/227로 인해 –