Вызов функции python в html файле
Есть ли способ вызвать функцию python при нажатии на определенную ссылку на странице html?
Спасибо
Ответы
Ответ 1
Вам нужно будет использовать веб-фреймворк для маршрутизации запросов на Python, так как вы не можете сделать это только с помощью HTML. Flask - одна простая структура:
server.py
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('template.html')
@app.route('/my-link/')
def my_link():
print 'I got clicked!'
return 'Click.'
if __name__ == '__main__':
app.run(debug=True)
Шаблоны /template.html
<!doctype html>
<title>Test</title>
<meta charset=utf-8>
<a href="/my-link/">Click me</a>
Запустите его с помощью python server.py
, а затем перейдите к http://localhost:5000/. Сервер разработки не является безопасным, поэтому для развертывания вашего приложения просмотрите http://flask.pocoo.org/docs/0.10/quickstart/#deploying-to-a-web-server
Ответ 2
Да, но не напрямую; вы можете установить обработчик onclick
для вызова функции JavaScript, которая построит объект XMLHttpRequest
и отправит запрос на страницу на вашем сервере. Эта страница на вашем сервере может, в свою очередь, быть реализована с использованием Python и делать все, что нужно.
Ответ 3
Да. Если ссылка указывает на ваш веб-сервер, вы можете настроить свой веб-сервер для запуска любого кода при нажатии этой ссылки и вернуть результат этого кода в браузер пользователя. Существует много способов написать такой веб-сервер. Например, см. Django. Вы также можете использовать AJAX.
Если вы хотите запустить код в браузере пользователя, используйте Javascript.
Ответ 4
Есть несколько способов сделать это, но тот, который лучше всего подходит для меня, - это использовать CherryPy. CherryPy - это минималистическая веб-инфраструктура python, которая позволяет запускать небольшой сервер на любом компьютере. Существует очень похожий вопрос на ваш fooobar.com/questions/519810/....
Код ниже сделает то, что вы хотите. Его пример 2 из учебника CherryPy.
import cherrypy
class HelloWorld:
def index(self):
# Let link to another method here.
return 'We have an <a href="showMessage">important message</a> for you!'
index.exposed = True
def showMessage(self):
# Here the important message!
return "Hello world!"
showMessage.exposed = True
import os.path
tutconf = os.path.join(os.path.dirname(__file__), 'tutorial.conf')
if __name__ == '__main__':
# CherryPy always starts with app.root when trying to map request URIs
# to objects, so we need to mount a request handler root. A request
# to '/' will be mapped to HelloWorld().index().
cherrypy.quickstart(HelloWorld(), config=tutconf)
else:
# This branch is for the test suite; you can ignore it.
cherrypy.tree.mount(HelloWorld(), config=tutconf)
Я лично использую CherryPy в сочетании с несколькими другими модулями и инструментами:
- Мако (библиотека шаблонов)
- py2exe (конвертировать в исполняемый файл Windows)
- GccWinBinaries (используется в сочетании с py2exe)
Я написал статью о Browser в качестве рабочего интерфейса пользователя с CherryPy, в котором представлены модули и инструменты, используемые и некоторые дополнительные ссылки, которые могут помочь.
Ответ 5
В дополнение к запуску сценариев Python на сервере вы можете запускать скрипты Python на стороне клиента, используя Skulpt.