में छिपे हुए फ़ील्ड _method का उपयोग कर अनुरोध विधि बदलना एक सीखने के अभ्यास के रूप में पाइथन और फ्लास्क चुनना शुरू किया, और PHP/Symfony2 से आना शुरू किया, मैं एक छिपी हुई _method फ़ील्ड को एक विधि में जोड़ सकता हूं ताकि POST विधि को किसी भी DELETE के साथ ओवरराइड किया जा सके या डाल।फ्लास्क
ऐसा लगता है कि फ्लास्क इस मूल रूप से समर्थन नहीं करता है, और मैं http://flask.pocoo.org/snippets/38/ सहित विभिन्न विचारों के साथ हैकिंग कर रहा हूं, जो काम करता है, लेकिन इसमें छिपे हुए क्षेत्र के बजाय फॉर्म एक्शन में ओवरराइड डालना शामिल है, जो आईएमओ बनाता है यूआरएल अस्पष्ट दिखता है।
उपर्युक्त पते की टिप्पणियों में एक स्निपेट है, जो रूटिंग परिप्रेक्ष्य से _method काम करता है, लेकिन जैसा कि वहां भी चर्चा की गई है, अगर आप अनुरोध में request.form तक पहुंचने का प्रयास करते हैं तो अनुरोध लटकने का कारण बनता है ।
क्या किसी के पास इसके लिए कोई कामकाज है? यदि नहीं, तो मैं सबकुछ पोस्ट के रूप में संभाल दूंगा, लेकिन यह काम करने के लिए एक रास्ता खोजने में सक्षम होना अच्छा होगा।
चीयर्स।
संपादित करें:
खाका:
<form action="{{ url_for('login') }}" method="POST">
<input type="hidden" name="_method" value="PUT">
<input class="span12" name="email" type="text" placeholder="E-mail address" value="{{ email }}">
<input class="span12" name="password" type="password" placeholder="Your password">
<a href="{{ url_for('reset_password') }}" class="forgot">Forgot password?</a>
<div class="remember">
<input id="remember-me" type="checkbox">
<label for="remember-me">Remember me</label>
</div>
<input class="btn-glow primary login" type="submit" name="submit" value="Log in">
</form>
एप्लिकेशन/__ init__.py
from flask import Flask
from werkzeug.wrappers import Request
class MethodRewriteMiddleware(object):
def __init__(self, app, input_name='_method'):
self.app = app
self.input_name = input_name
def __call__(self, environ, start_response):
request = Request(environ)
if self.input_name in request.form:
method = request.form[self.input_name].upper()
if method in ['GET', 'POST', 'PUT', 'DELETE']:
environ['REQUEST_METHOD'] = method
return self.app(environ, start_response)
app = Flask(__name__)
app.wsgi_app = MethodRewriteMiddleware(app.wsgi_app)
from app import views
देखें यहाँ जो एक बार देख ले जाना चाहता है किसी के लिए कोड है:
from flask import render_template
@app.route('/user/login', methods=['GET','POST','PUT'])
def login():
emailvalue = '[email protected]'
if request.method == 'PUT':
emailvalue = request.form['email']
return render_template('login.html', email=emailvalue)
[Request.Form] (http: शायद वहाँ भी कुछ खतरनाक बढ़त मामलों है कि मैं अपने आप की पता नहीं है, जिसके कारण मैं कभी नहीं एक असली आवेदन में निम्नलिखित की कोशिश कर रहा जोखिम होता हैं // flask.pocoo.org/docs/quickstart/#the-request-object) आपके लिए कुछ उपयोग हो सकता है। – John
हाय @johnthexiii, आपकी टिप्पणी के लिए धन्यवाद। मैं वास्तव में अनुरोध कर रहा हूं कि _method सेट है या नहीं, लेकिन एक बार जब मैं ऐसा करता हूं और मिडलवेयर में REQUEST_METHOD बदलता हूं, तो मैं दृश्यों में request.form तक नहीं पहुंच सकता (ऐप बस लटकता है)। यह सुझाव है कि मैं जिस सुझाव का प्रयास कर रहा था उसका लिंक है: http://flask.pocoo.org/snippets/38/#comment-box (दूसरी टिप्पणी) – aleayr
मैंने कुछ कोड डाला है जो कि एक बेहतर अवलोकन देने के लिए है मैं हासिल करने की कोशिश कर रहा हूँ। – aleayr