Milos Radosavljevic Milos Radosavljevic - 20 days ago 9
Python Question

Calling a python function with a button

I want to be able to click on a button in html and call a python function.
I have tried this and it works but only for text. And I have seen here that you can use the function name in action for buttons but it does not work and I dont know why :/

And I dont want after the click of the button go to to another page, I want to stay on the same page and just execute the code from the function.

my py file :

from flask import Flask
from flask import render_template
import tkinter as tk
from tkinter import filedialog
import sys
app = Flask(__name__)

@app.route('/')
def hello_world():
return render_template('hello.html')

@app.route('/upload/')
def uploaduj():
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilename()
return file_path


my html file:

<!doctype html>
<title>Flaskr</title>
<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">
<div class=page>
<h1>Flaskr</h1>
<div class=metanav>
<button action="/upload/">Klik</button>
</div>


I am really new to python and flask so every help is appreciated.

EDIT: i now know that tkinter will not work in web browsers

Answer

You want an HTML file input dialog.

<form action="/upload">
    <input type="file" name="fileupload" value="fileupload" id="fileupload">
    <label for="fileupload"> Select a file to upload</label>
    <input type="submit" value="Klik">
</form>

How you handle that in Flask, is in the documentation

Comments