টেক্সটবক্স থেকে ফ্লাস্কে ডেটা প্রেরণ করবেন?


92

আমি ভাবছিলাম যে এইচটিএমএলে কোনও পাঠ্য বাক্স থেকে কিছু নেওয়ার কোনও উপায় আছে, এটিকে ফ্লাস্কে খাওয়াতে হবে, তারপরে পাইথনের সাহায্যে ডেটা পার্স করুন। আমি ভাবছিলাম এটিতে কিছু জেএস জড়িত থাকতে পারে তবে আমি ভুল হতে পারি। কোন ধারনা?


এইচটিএমএল ফর্ম ব্যবহার করবেন না এবং সরাসরি পোস্ট করুন কেন? বা আপনার কি এই অযৌক্তিকভাবে করা দরকার? সেক্ষেত্রে আপনার এজেএক্স-তে কিছু পাঠ্যক্রম পড়তে হবে। :-)
মার্টিজান পিটারস

4
আমি জানি যে আমি একটি এইচটিএমএল ফর্ম ব্যবহার করতে পারি, তবে কীভাবে আমি ফ্ল্যাশ অ্যাপ্লিকেশনটিতে এই তথ্যটি প্রেরণ করব?
ওলিয়েন

উত্তর:


154

আপনি আরও জটিল কিছু করতে না চাইলে এইচটিএমএল ফর্ম থেকে ফ্লাস্কে ডেটা খাওয়ানো বেশ সহজ।

  • একটি পোস্ট তৈরি করুন যা একটি পোষ্ট অনুরোধ গ্রহণ করে ( my_form_post)।
  • অভিধানে ফর্ম উপাদানগুলি অ্যাক্সেস করুন request.form

templates/my-form.html:

<form method="POST">
    <input name="text">
    <input type="submit">
</form>
from flask import Flask, request, render_template

app = Flask(__name__)

@app.route('/')
def my_form():
    return render_template('my-form.html')

@app.route('/', methods=['POST'])
def my_form_post():
    text = request.form['text']
    processed_text = text.upper()
    return processed_text

অনুরোধ ডেটা অ্যাক্সেস সম্পর্কে এটি ফ্লাস্ক ডকুমেন্টেশন

যদি আপনার আরও জটিল ফর্মগুলির প্রয়োজন হয় যাগুলির বৈধতার প্রয়োজন হয় তবে আপনি ডাব্লুটিফোর্ডগুলি এবং সেগুলি কীভাবে ফ্লাস্কের সাথে সংহত করতে পারবেন তা একবার দেখে নিতে পারেন ।

নোট: যদি না আপনার যদি অন্য কোন সীমাবদ্ধতা থাকতে, আপনি কি সত্যিই জাভাস্ক্রিপ্ট প্রয়োজন হবে না এ সব আপনার ডেটা পাঠাতে (যদিও আপনি এটি ব্যবহার করতে পারবেন)।


4
আরে, এটি একবার কাজ করেছে, তবে এখন 500 ত্রুটি ছুড়েছে, কোনও ধারণা?
ওলিয়েন

এটি ঠিকঠাক কাজ করা উচিত ... app.debug = Trueঠিক এর আগে রাখুন app.run()যাতে আপনি ত্রুটির ব্যতিক্রম এবং ট্রেসব্যাক পান।
পাচা

হ্যাঁ, আমি সে সম্পর্কে ভুলে গিয়েছিলাম, আমি একজন নির্বোধ এবং আমার টেম্পলেট ফোল্ডারে আমার এইচটিএমএল স্থাপন করতে ভুলে গিয়েছিলাম।
ওলিয়েন

আমি যদি পাঠ্যবক্সের পরিবর্তে বড় টেক্সেরিয়া দিয়ে এটি করার চেষ্টা করতে কিছুটা সময় নষ্ট করি তবে যদি কেউ ফ্লাস্কের সাথে সমাধান করতে হয় তবে সমাধানটি এখানে রয়েছে
এলাচ

@ কার্ডডাম আপনি যা বলতে চাইছেন তা আমি সত্যিই পাই না। টেক্সারিয়া বা প্রকারের পাঠ্যের ইনপুটটি কোনওভাবেই সমাধান পরিবর্তন করে না (আপনি যেটিকে সংযোগ দিচ্ছেন এটি ঠিক এটির মতো)) আপনি পাইথন পাশ পরিবর্তন করতে, শুধু প্রতিস্থাপন হবে না <input type="text" name="text">দ্বারা <textarea name="text"></textarea>এবং আপনার জরিমানা করা উচিত।
পাচা

9

POST ইনপুট প্রকারটি গ্রহণ করার জন্য একটি ফ্লাস্ক এন্ডপয়েন্টটি ঘোষণা করুন এবং তারপরে প্রয়োজনীয় পদক্ষেপগুলি করুন। ডেটা পোস্ট করতে jQuery ব্যবহার করুন।

from flask import request

@app.route('/parse_data', methods=['GET', 'POST'])
def parse_data(data):
    if request.method == "POST":
         #perform action here
var value = $('.textbox').val();
$.ajax({
  type: 'POST',
  url: "{{ url_for('parse_data') }}",
  data: JSON.stringify(value),
  contentType: 'application/json',
  success: function(data){
    // do something with the received data
  }
});

2

অনুরোধ এবং প্রতিক্রিয়া দ্বারা সার্ভার (আপনার ফ্লাস্ক অ্যাপ) এবং ক্লায়েন্ট (ব্রাউজার) এর মধ্যে সমস্ত মিথস্ক্রিয়া। যখন ব্যবহারকারী হিট বাটন আপনার ফর্মটিতে জমা দেয় তখন তার ব্রাউজারটি আপনার ফর্মটির সাথে অনুরোধটি আপনার সার্ভারে (ফ্লাস্ক অ্যাপ্লিকেশন) প্রেরণ করে এবং আপনি ফর্মের বিষয়বস্তু পেতে পারেন:

request.args.get('form_name')

1

ধরে নেওয়া যাক আপনি ইতিমধ্যে জানেন কিভাবে একটি দৃশ্য লিখতে মধ্যে Flaskকোন URL- এ যে সাড়া, যেটা সার্চ তৈরি request.postডেটা। যোগ করার জন্য input boxএই পোস্ট তথ্য টেক্সট বক্সে সঙ্গে আপনার পৃষ্ঠায় একটি ফর্ম তৈরি করতে। তারপরে আপনি এটি করতে ব্যবহার jqueryকরতে পারেন

var data = $('#<form-id>').serialize()

এবং তারপরে নীচের মতো কিছু ব্যবহার করে আপনার মতামতটি অবিচ্ছিন্নভাবে পোস্ট করুন।

$.post('<your view url>', function(data) {
  $('.result').html(data);
});

0

এটি আমার পক্ষে কাজ করেছে।

def parse_data():
    if request.method == "POST":
        data = request.get_json()
        print(data['answers'])
        return render_template('output.html', data=data)
$.ajax({
      type: 'POST',
      url: "/parse_data",
      data: JSON.stringify({values}),
      contentType: "application/json;charset=utf-8",
      dataType: "json",
      success: function(data){
        // do something with the received data
      }
    });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.