Вызов функции python в html-файле

есть ли способ вызвать функцию python, когда определенная ссылка нажата на html-странице?

спасибо

5 ответов


вам нужно будет использовать веб-фреймворк для маршрутизации запросов на Python, так как вы не можете сделать это только с HTML. колбы есть одна простая схема:

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)

шаблоны/шаблон.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


да, но не напрямую; вы можете установить onclick обработчик для вызова функции JavaScript, которая будет строить


да. Если ссылка указывает на ваш веб-сервер, вы можете настроить веб-сервер для запуска любого кода при нажатии на эту ссылку и вернуть результат этого кода в браузер пользователя. Есть много способов написать веб-сервер, как это. Например, см. Джанго. Вы также можете использовать AJAX.

Если вы хотите запустить код в браузере пользователя, используйте Javascript.


есть несколько способов сделать это, но тот, который работал лучше для меня это использовать CherryPy. CherryPy-это минималистичный веб-фреймворк python, который позволяет запускать небольшой сервер на любом компьютере. Есть очень похожий вопрос к Вашему на stackoverflow-использование браузера для рабочего стола UI.

приведенный ниже код будет делать то, что вы хотите. Его пример 2 из руководства CherryPy.

import cherrypy

class HelloWorld:

    def index(self):
        # Let's link to another method here.
        return 'We have an <a href="showMessage">important message</a> for you!'
    index.exposed = True

    def showMessage(self):
        # Here's 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 в сочетании с несколькими другие модули и инструменты:

  • Mako (библиотека шаблонов)
  • py2exe (конвертировать в исполняемый файл Windows)
  • GccWinBinaries (используется в сочетании с py2exe)

Я написал статью о браузер как настольный интерфейс с CherryPy что вводит модули и инструменты, используемые плюс некоторые дополнительные ссылки, которые могут помочь.


помимо запуска скриптов Python на сервере, вы можете запускать скрипты Python на стороне клиента с помощью Skulpt.