This is improved from my python-based web based to display function. In this version, users have ability to input a function and then display it with it value for given variable to python-based web page.

The code below will get input from users (if no input, the default value is sin(x)), parsed it to function python understand, and then eval it for given variable (in this code, x=10). After computed, it's inserted to template that resembling html code. Thus, since it's displayed in html style, we could add our customization (background, css, etc)



Here's the code


#!/usr/bin/python
# -*- coding: utf-8 -*-
import BaseHTTPServer, urllib, re
import sys,parser
from math import *

class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
    template = u"""<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd"><html><head><title>%s</title>
        </head><body><h1>%s</h1><pre>%s</pre>Function<form action="" method="POST"
        class="editor"><div><textarea name="text">%s</textarea><input type="submit"
        value="Compute"></div></form></body></html>"""
    
    def escape_html(self, text):
        """Replace special HTML characters with HTML entities"""
        return text.replace(
                            "&", "&amp;").replace(">", "&gt;").replace("<", "&lt;")
    
    def link_repl(self, match):
        """Return HTML for link"""
        title = match.group(1)
        if title in self.server.pages:
            return u"""<a href="%s">%s</a>""" % (title, title)
        return u"""%s<a href="%s">?</a>""" % (title, title)
    
    def do_HEAD(self):
        """Send response headers"""
        self.send_response(200)
        self.send_header("content-type", "text/html;charset=utf-8")
        self.end_headers()
    
    def do_GET(self):
        """Send page text"""
        self.do_HEAD()
        page = self.escape_html(urllib.unquote(self.path.strip('/')))
        text = self.escape_html(self.server.pages.get(page, "sin(x)"))
        parsed = re.sub(r"\[\[([^]]+)\]\]", self.link_repl, text)
        #hitung fungsi
        fungsi=parser.expr(parsed).compile()
        x = 10
        y = eval(fungsi)
        tout = 'The value of  ',parsed, ' on x = ',x,' is ',y
        tout = str(tout)
        tout = re.sub(r",", "", tout)
        tout = re.sub(r"\'", "", tout)
        tout= tout[1:]
        tout= tout[:-1]
        self.wfile.write(self.template % (page, page, tout, text))
    
    def do_POST(self):
        """Save new page text and display it"""
        length = int(self.headers.getheader('content-length'))
        if length:
            text = self.rfile.read(length)
            page = self.escape_html(urllib.unquote(self.path.strip('/')))
            self.server.pages[page] = urllib.unquote_plus(text[5:])
        self.do_GET()

if __name__ == '__main__':
    server = BaseHTTPServer.HTTPServer(("", 8080), Handler)
    server.pages = {}
    server.serve_forever()

Here's the screenshot
From python
0

Add a comment

Layang Kangen

via IFTTT
Sing Sing Sing

via IFTTT
Layang Kangen.
Rayuan Pulau Kelapa.
Birama ganjil di pagi hari, 😁.
Manuk Dadali

via IFTTT
Killing Me Softly

via IFTTT
Tears in Heaven.
Happy...
Ritual Drummer Normal saat ingin memainkan set drum saya.
Uptown Funk.
Let It Go. Versi Idina Menzel.
Tuntun Kan Ku Dalam Damai. Lagu mas Mamat.
Dapat hadiah lomba joget, 😁

via IFTTT
Cicilan lagu baru mas Mamat, 😁

via IFTTT
Mulai mengisi, 😁

via IFTTT
Can’t Help Falling in Love with You.
Lilin-lilin Kecil

via IFTTT
Viva la Vida

via IFTTT
Belum punya energi untuk menambah part bass/keyboard, 😁

via IFTTT
Can’t help falling in love with you.
Let It Go

via IFTTT
Bojo Galak, 😁

via IFTTT
Let It Go.
Dan

via IFTTT
Ku Tak Bisa

via IFTTT
Walang Ireng.
Wonderful Tonight

via IFTTT
Balada rekaman per-track, 😁

via IFTTT
Tentang Kita.
What a Wonderful World.
See You Again.
Akad.
Untuk Perempuan yang Sedang dalam Pelukan.
Si Pemalas dan Si Pemula. Menabrak semua aturan, 😁.
Archive
Label
Popular Posts
Popular Posts
Loading