2011-04-10 17 views
10

के भीतर एक पायथन फ़ंक्शन को कॉल करें क्या एक HTML पृष्ठ के भीतर एक निश्चित लिंक क्लिक होने पर पाइथन फ़ंक्शन को कॉल करने का कोई तरीका है?एक HTML फ़ाइल

धन्यवाद

उत्तर

19

आपको 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) 

टेम्पलेट्स/template.html:

<!doctype html> 

<title>Test</title> 
<meta charset=utf-8> 

<a href="/my-link/">Click me</a> 

python server.py साथ भागो यह और फिर http://localhost:5000/ पर नेविगेट Flask एक सरल रूपरेखा है। विकास सर्वर सुरक्षित नहीं है, इसलिए अपने आवेदन को तैनात करने के लिए, http://flask.pocoo.org/docs/0.10/quickstart/#deploying-to-a-web-server

+0

क्या आप बोतल के साथ ऐसा कर सकते हैं? – Temere

+0

@Temere: वाक्यविन्यास बिल्कुल वही होना चाहिए। मुझे लगता है कि 'render_template' का सिर्फ एक अलग नाम है। – Blender

+0

केवल इन दो फाइलों को बनाना काम नहीं करता है। क्या किया जाना है (परियोजनाएं बनाना)? –

6

हाँ, लेकिन सीधे नहीं; आप onclick हैंडलर को एक जावास्क्रिप्ट फ़ंक्शन का आह्वान करने के लिए सेट कर सकते हैं जो XMLHttpRequest ऑब्जेक्ट का निर्माण करेगा और आपके सर्वर पर किसी पृष्ठ पर अनुरोध भेजेगा। आपके सर्वर पर वह पृष्ठ, बदले में, पाइथन का उपयोग करके कार्यान्वित किया जा सकता है और जो कुछ भी करने की आवश्यकता होगी उसे करें।

2

हां। यदि लिंक आपके वेब सर्वर पर इंगित करता है, तो आप उस लिंक को क्लिक करते समय किसी भी प्रकार के कोड को चलाने के लिए अपना वेब सर्वर सेट अप कर सकते हैं, और उस कोड का परिणाम उपयोगकर्ता के ब्राउज़र पर वापस कर सकते हैं। इस तरह एक वेब सर्वर लिखने के कई तरीके हैं। उदाहरण के लिए, Django देखें। आप AJAX का भी उपयोग करना चाह सकते हैं।

यदि आप उपयोगकर्ता के ब्राउज़र में कोड चलाने के लिए चाहते हैं, तो जावास्क्रिप्ट का उपयोग करें।

2

ऐसा करने के कई तरीके हैं, लेकिन जिसने मेरे लिए सबसे अच्छा काम किया है वह चेरीपी का उपयोग करना है। चेरीपी एक न्यूनतम पायथन वेब ढांचा है जो आपको किसी भी कंप्यूटर पर एक छोटा सर्वर चलाने की अनुमति देता है। stackoverflow - Using the browser for desktop UI पर आपके लिए एक बहुत ही समान प्रश्न है।

नीचे दिया गया कोड वही करेगा जो आप चाहते हैं। चेरीपी ट्यूटोरियल से इसका उदाहरण 2।

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 का उपयोग करें:

  • मैको (टेम्पलेट लायब्रेरी)
  • py2exe (विंडोज निष्पादन में बदलने)
  • GccWinBinaries (साथ संयोजन में उपयोग py2exe)

मैंने Browser as Desktop UI with CherryPy था के बारे में एक लेख लिखा था टी मॉड्यूल और टूल्स का इस्तेमाल करता है और कुछ और लिंक जो मदद कर सकते हैं।

1

किसी सर्वर पर पाइथन स्क्रिप्ट चलाने के अलावा, आप Skulpt का उपयोग कर क्लाइंट-साइड पर पाइथन स्क्रिप्ट चला सकते हैं।

संबंधित मुद्दे