» »

Python v Wordpress

Python v Wordpress

Halfdead987 ::

Naredil bi nek easy program v pythonu(npr kalkulator, ki ti nekaj zračuna) in ga dal na WP stran
Zanima me samo če se da in kako
Hvala
Alternative kot so django ipd ne pridejo v poštev

BlackLight ::

Načeloma imaš dve možnosti.

Prvo da imaš strežnik tam kjer imaš wordpress da ima python in si enostavo narediš php skripto katera executa .py oziroma tvoj program in prebere output.

Druga pa da si v pythonu narediš manjši rest api (Flask) in potem na api kličeš z wordpressa.

Halfdead987 ::

BlackLight je izjavil:

Načeloma imaš dve možnosti.

Prvo da imaš strežnik tam kjer imaš wordpress da ima python in si enostavo narediš php skripto katera executa .py oziroma tvoj program in prebere output.

Druga pa da si v pythonu narediš manjši rest api (Flask) in potem na api kličeš z wordpressa.

Bral sem o tej prvi moznosti tu
https://wordpress.stackexchange.com/que...
to lahko printa samo output in ne more racunati inputov ipd?
se to z drugo moznostjo da?

blackbfm ::

zakaj ne bi "nek easy program" raje naredil v phpju?

jype ::

Halfdead987 je izjavil:

to lahko printa samo output in ne more racunati inputov ipd?
se to z drugo moznostjo da?
V obeh primerih se da oboje.

blackbfm je izjavil:

zakaj ne bi "nek easy program" raje naredil v phpju?
To bi bilo daleč najmanj zoprno, glede na to da je cel Wordpress v php.

Zgodovina sprememb…

  • spremenilo: jype ()

Isotropic ::

kaj pa python kot cgi ala old school forme?

Zgodovina sprememb…

Halfdead987 ::

blackbfm je izjavil:

zakaj ne bi "nek easy program" raje naredil v phpju?

mora biti nujno v pythonu

HotBurek ::

Prvo potrebuješ API, ki bo za input izpisal output.

Npr.:
www.host.com/kalkulator.py/?action=plus...


Install

nginx
apt-get install nginx
nginx - small, powerful, scalable web/proxy server

uwsgi
apt-get install uwsgi
uwsgi - fast, self-healing application container server


Najprej namestiš nginx. Nato uwsgi.

nginx config:
server {
    listen 80;
    server_name = www.host.com;
    root = "/var/www/www.host.com/";

    location / {
        try_files $uri =404;
        include uwsgi_params;
        uwsgi_modifier1 9;
        uwsgi_pass 127.0.0.1.5000;
	}
}


Sam uwsgi nastaviš tako, da dela na portu 5000, za zgornji root path.

[uwsgi]
plugins = cgi
socket = 127.0.0.1:5000
cgi = /var/www/www.host.com/
cgi-allowed-ext = .py
cgi-helper = .py = python3.5
processors = 2
threads = 4
# <-- this is a comment


Poti do config fajlov:
nginx = /etc/nginx/sites-available/
uwsgi = /etc/uwsgi/apps-available/

Da postane config "live", mora bit narejen link iz x-available v x-enabled in service restartan.

ln -s /etc/nginx/sites-available/www.host.com /etc/sites-enabled/
ln -s /etc/uwsgi/apps-availabe/www.host.com /etc/uwsgi/apps-enabled/

Linke se vidi:
cd /etc/nginx/sites-enabled
ls -l

Service x start/stop/status
service nginx status

Test nginx configa pred restartom
nginx -t

Network listening ports
netstat -anotlp


Ko imaš to, v root folder (/var/www/www.host.com) shraniš kalkulator.py file. Začetna srkitpa, ki prebere vhodne parametre in jih izpiše.

Primer:
#!/usr/bin/python3.5

import os;

# print header
print("Content-Type: text/plain; charset=utf-8;");
print("");

# print env variables
for par in os.environ.keys():
    print(str(par) + "=" + os.environ[par]);
    # <-- kalkulator....
    action = "plus";
    if action == "plus":
        val1 = 10;
        val2 = 5;
        sum = val1 + val2;
        print("sum=" + str(sum));
    print("---");


Ta skripta vrne text/html, env values in "sum=15".


V samem HTMLju pa je potrebno vključit JS skripto, ki naredi HTTP GET request na zgornji URL, in nekako sparsa vrnjene vrednosti, ter jih zapiše v HTML element.

JS skripta, ki ob zagonu naredi tak request in izpiše response v message box:

document.addEventListener('DOMContentLoaded', function() {

    var kalkulator = "http://www.host.com/kalkulator.py/?action=plus&val1=10&val2=5";

    var xhr = new XMLHttpRequest();
    xhr.withCredentials = false;
    xhr.open("GET", kalkulator, true);
    xhr.timeout = 3000;

    xhr.onreadystatechange = function () {
        if (xhr.readyState == XMLHttpRequest.DONE) {
            if (xhr.status == "200") {
                response = xhr.response.toString().trim();
                window.alert(response);
                // write response to HTML element....
            };
        };
    };

    xhr.ontimeout = function (e) { window.alert("Time out"); };
    xhr.onerror = function (e) { window.alert("Error"); };
    xhr.onabort = function (e) { window.alert("Abort"); };
    xhr.send(null);
});


Za drebug JS kode uporabi F12 v brskalniku.


Ko imaš to, lahko tako funkcionalnost (JS link) uvoziš v WP.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Zgodovina sprememb…

  • spremenilo: HotBurek ()

Halfdead987 ::

prvi link ne dela


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Začetki programiranja

Oddelek: Pomoč in nasveti
233186 (2234) FTad
»

Postavitev mySQL

Oddelek: Programiranje
92078 (1656) M01O
»

Kako narediti request z "\" v URL-ju

Oddelek: Programiranje
172014 (1289) Horejšio
»

Kako masovno pingat?

Oddelek: Programiranje
448253 (6240) ragezor
»

[FORK] PHP kot jezik

Oddelek: Programiranje
353243 (2582) [MYTiX]

Več podobnih tem