Python mit PHP "verkuppeln"

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Coder
User
Beiträge: 19
Registriert: Dienstag 14. Juni 2011, 00:13

Hallo.

Ich habe gerade mit Python angefangen. Ich arbeite im Moment mit Bottle
Ich mache gerade einige Grundlagen wie Dateizugriff, Variablen, Schleifen etc pp.
Teilweise mache ich es in Form von Kommandozeilenscripten, teilweise auch über den Bottle-eigenen Webserver.

Ich möchte jetzt Python mit PHP "verkuppeln".

Das heißt, ich muss die Daten mit PHP annehmen (z.B. die Formulardaten) und an Python weiterreichen. Das Python Script liefert die Ergebnisse dann als Variablen zurück und das PHP Script übernimmt die Ausgabe. Browserweichen, Menüsystem usw sollen auch weiter auf PHP Basis laufen.

Konkret habe ich also vor : Python als "Logiksprache" und PHP als "Layoutsprache". Zumindest so lange, bis ich etwas besser bin und das Layout so genau wie möglich in ein Python Framework übernehmen kann.

Wie macht man sowas üblicherweise / Idealerweise? Wie verkuppelt man Python und PHP?

Außerdem gibt es noch etwas zu machen: Ich möchte phpBB und Python "verkuppeln".
Wie bekomme ich phpBB idealerweise an Python angebunden?


P.S. Mir gelang es bis Heute noch nicht einmal, mein Webseitendesign in einem PHP basierenden CMS umzusetzen wie ich es wollte. Da wären tiefergehende Ändeurngen notwendig gewesen. Bei den Python Frameworks mit Templateengine gibt es mit Sicherheit auch irgendwelche "systembedingten" Einschränkungen, und da kann ich momentan Mangels Knowhow noch weniger "zurechtfrickeln."
Mein Menüsystem und mein Webseitentemplate ist zwar nicht groß und komplex, es ist aber eine klassiche "Extrawurst" mit besonderen Funktionen/Layout.
Daher will ich das PHP basierte Template erst mal weiter benutzen, bis ich mich mit Python besser auskenne und es neu bauen kann wie ich es haben will.
BlackJack

@Coder: Klingt nach einem JSON-RPC-Server in Python. Die Frage ist in wie weit man da dann noch ein Webrahmenwerk in Python braucht, wenn man dessen Funktionalität gar nicht haben will. Denn wenn Du weder Ausgaben für den Benutzer damit generieren lässt, noch das Routing verwendest, was bleibt denn da noch!?
Coder
User
Beiträge: 19
Registriert: Dienstag 14. Juni 2011, 00:13

Also ich erkundige mich mal über den "json-rpc" Server.

Als Idee kamen mir auch so Sachen wie "Sockets" oder die python Scripte über PHP ganz einfach direkt aufzurufen (Wie es z.B. auch mit Shellscripts geht)

Irgendwann mal will ich natürlich diese "Mischlösung" ablegen und soweit wie möglich einheitlich auf Python gehen. Aber ich muss erst mal herausfinden, wie ich mein Design auf ein Python Framework übertrage, so dass es mir gefällt.
Noch weiß ich nicht viel darüber, und weiß auch nicht, welche systembedingten Einschränkungen die Frameworks beim Layout haben und wo man eventuell etwas "tricksen" müsste.
Wenn ich dran denke, wie lange ich mit Wordpress gebraucht habe, und selbst da ist mein Layout nicht 1:1 rein gegangen. Ich musste da auch Kompromisse eingehen, und tricksen. Oder ich hätte tiefergehende Änderungen an Wordprss machen müssen.
Ich habe mein Layout eigentlich nur mit einem selbstprogrammierten Templatesystem exakt so hinbekommen wie ich es haben wollte. Das ging soweit, dass ich dem Wordpress mein eignes Menü und Templatesystem vorgelagert habe. Dann habe ich die Wordpress Sachen per CURL aufgerufen und das Wordpress Design durch Stringmanipulation auf ein eignes CSS Layout abgeändert. Menü und Seiten-Design war also eigenständig, der Content kam aus Wordpress. Zuerst hatte ich das Wordpress Frontend möglichst clean gemacht. Was aufgrund von Systemeinschränkungen nicht entfernbar war, habe ich dann mittels Stringmanipulation entfernt oder ersetzt oder Elemente mittels eigenem CSS komplett umgesetzt.
Beim Frontend habe ich sehr viel dafür gemacht, dass es möglichst "selbstgemacht" aussieht. Nur das Backend war original, da sah man noch, dass hinter der Seite Wordpress steckt.
Coder
User
Beiträge: 19
Registriert: Dienstag 14. Juni 2011, 00:13

Ich habe übrigens vor, die neue Seite so zu machen, dass ich einen selber gemachten Frontend habe, und nur noch den Backend irgendwoher vorgefertigt nehme. Oder dass man zumindest einen fertigen Frontend so ändert, dass es 100% selbstgemacht aussieht und ich meine eigenen Layoutideen verwirklichen kann, und mich nicht an irgendwelche Vorgaben bei der Menüstruktur halten muss. Bei der Contentanzeige will ich auch ein eigenes Layout, und mich nicht an irgendwelche Vorgaben durch das CMS halten. Z.B. kann man oft bestimmte Elemente nicht frei platzieren, sondern nur aus vorgegebenen Positionierungs- und Darstellungsvarianten wählen, sofern man nicht tiefgehende Änderungen macht. Selbst mit einem eigenen Template sieht man nachher immer noch, dass es Wordpress ist, sofern man nicht im Quelltext von Wordpress Änderungen vornimmt.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@Coder: Ich halte den Ansatz für völlig falsch. Bring' doch einfach die Motivation auf, direkt alles in Python zu machen und nicht irgendwelche behelfsmäßigen PHP-Python Konstrukte. Sonst kommst du wahrscheinlich nie von PHP weg _oder_ lernst nie vernünftig Python (für die Webprogrammierung).

HTML Formulare generieren und auswerten ist auch mit Python kein Ding. Dazu gibt es Module wie WTForms (was auch IMHO ziemlich einfach zu handhaben ist) oder Flatland.

Für das Layout der Seite kombinierst du HTML mit einer Template Engine. Bottle hat bekanntlich SimpleTemplate an Bord, was in der Tat ebenfalls einfach zu handhaben ist. Wenn's ein bisschen mehr sein muss ist Jinja2 sicherlich eine gute Wahl.

Gruß, noisefloor
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich denke auch, dass Du Dir zu viele Sorgen um das HTML-Layout machst. Wie Du Dein HTML gestaltest ist doch alleine Deine Sache und vom Framework eigentlich unabhängig. Ich vermute mal, dass Du noch gar nicht richtig verstanden hast, wie Frameworks in Python so funktionieren. Daher würde ich einfach mal versuchen, mich in eines einzuarbeiten und zu gucken, wo Du an Probleme stößt.

Generell ist es für einen Anfänger mit Python auch nicht die beste Idee sofort mit Webprogrammierung anzufangen, eben weil Du sofort mit einem Framework konfrontiert wirst und Konstrukte nutzen musst, die man vermutlich noch nicht wirklich verstanden hat.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
deets

Coder hat geschrieben:Bei den Python Frameworks mit Templateengine gibt es mit Sicherheit auch irgendwelche "systembedingten" Einschränkungen, und da kann ich momentan Mangels Knowhow noch weniger "zurechtfrickeln."
Diese Behauptung stellst mit schoener Regelmaessigkeit auf. Und sie ist ebenso regelmaessig voelliger Unfug. Eine template-engine ist kein allverschlingendes Monster, sondern im Grund nix mehr als das, was du auch mit einer simplen PHP-Datei machst: Ausgabe von HTML unter Einsetzung von Variablen-Werten, und mit ein paar Kontrollstrukturen garniert zum iterieren und verzweigen, um Sachen mehrfach oder gar nicht darzustellen.

Mehr nicht.

Also bitte, loes dich doch mal von deinen komischen Vorstellungen, und *mach* einfach was mit einer Template-Engine.
Coder
User
Beiträge: 19
Registriert: Dienstag 14. Juni 2011, 00:13

Hi.

Ja, als Anfänger sollte man sich wohl als allererstes nur mit der "reinen Prgrammierung" beschäftigen. Man macht also wohl am besten erst mal Shellscripte.

Das will ich ja auch, d.H. ich will das eigentliche Webdesign mit Python erst mal aussparen und erstmal den Background Kram machen. Andererseits habt ihr recht, wenn man so eine "Hybridlösung" anfängt, kommt vielleicht nicht mehr davon weg.

Beim Layout bin ich übrigens recht "Pingelig". Ich habe meine eigenen Designvorstellungen. Wenn ich mein Design ändern muss, weil es nicht ohne große "Frickelei" mit dem verwendeten System umsetzbar ist, bin ich damit nicht zufrieden. Daher hatte ich in PHP mein eigenes Menüsystem/Frontend begonnen.
Ich weiß noch nicht wirklich, was mit Python Frameworks und deren Template Engines überhaupt machbar ist, es ist keine Behauptung, sondern eine Befürchtung, die aus PHP Zeiten kommt. Bei Bottle sehe ich keine großen Probleme, mein Layout wie gewünscht umzusetzten, wenn ich die Ausgabe selber übernehme und den HTML/CSS Output selber generiere gehts auf jeden Fall. Wie das bei der Template Engine ausseht, weiß ich nicht. Und wie es bei komplexen Systemen wie Django aussieht, weiß ich auch nicht.

Ich habe nur meine Erfahrungen mit PHP basierten Systemen, vor Allem Wordpress. Und da ist es eben teilweise relativ schwierig, ein komplett eigenes Layout zu gestalten, weil man immer an irgendwelche Systemvorgaben gebunden ist. Man sieht trotz eigenem Layout meißtens noch die "Handschrift" des zugrunde liegenden Systems. Zumindest wenn man nur das macht, was vom Entwickler vorgesehen ist. Im Quellcode des CMS selber kann man natürlich Änderungen vornehmen und so die "Begrenzungen" umgehen.
Wenn z.B. kein Menü mit mehreren Unterebenen vorgesehen ist, bringt ein reines Template nicht viel.
Oder wenn z.B. die Seitenstruktur durch die Engine grob vorgegeben ist.
Da muss man dann schon an den Quellcode ran gehen.



Mein Design benötigt 2 Menüsysteme, und zwar ein horizontales Schnellzugriffsmenü und ein vertikales Menü mit Baumstuktur zum "Ausklappen" und bis zu 8 Unterebenen.
Das eigentliche Layout ist ein "Boxmodell", wovon aber einige Boxen nicht benutzt sind / leer sind, aber schon vorgesehen sind (Hauptsächlich die Advertisement Boxen)

Hier mal ein Layoutkonzept. Wäre sowas mit den python Frameworks und deren Template Engines so umsetzbar ohne viel Aufwand?
http://www.file-upload.net/download-351 ... t.pdf.html

Hier nochmal das gleiche ohne ein penetrantes Popup:
http://www.uploadarea.de/upload/7xrha7k ... w1kdc.html
Zuletzt geändert von Coder am Freitag 17. Juni 2011, 14:15, insgesamt 1-mal geändert.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Coder hat geschrieben:Hier mal ein Layoutkonzept. Wäre sowas mit den python Frameworks und deren Template Engines so umsetzbar?
http://www.file-upload.net/download-351 ... t.pdf.html
Kein Problem. Der Punkt ist doch, dass du dich nicht in ein fertiges (X)HTML-Gerüst reinhängen musst. Du erstellst die gewünschte HTML-Datei und packst Platzhalter an die Stellen, die vom Code aus gefüllt werden. Je nach Template Engine kannst du dann noch im Template noch zusätzliche Funktionen wie Schleifen und Bedingungen verwenden.

Im Prinzip ist es das gleiche, wie man es bei PHP auch macht, es sei denn, man hat wirklich die Vorgehensweise seit über 10 Jahren nicht mitbekommen und mischt den PHP-Code tatsächlich noch mit HTML.
Coder
User
Beiträge: 19
Registriert: Dienstag 14. Juni 2011, 00:13

Naja, den PHP mit HTML mischen mache ich nicht.
Sondern ich habe das Layout in CSS/HTML/XML Files stehen und gebe es per PHP aus. Der Inhalt wird über die Variablen eingefügt.

Selber gebaut klappte es. Den Wordpress und den phpBB konnte ich jedoch nicht zu diesem Layout und dem gewünschten Menüsystem überreden.
Man sah halt immer noch die "Handschrift" von Wordpress. Zumindest so lange, wie ich nur ein eigenes Wordpress Layout benutzte.
Später habe ich dann aber gefrickelt, so dass man das Wordpress gar nicht mehr erkannte, und ich ein eigenes Menü verwendet habe.
deets

@Coder

Zuersteinmal halte ich deinen Hybrid-Ansatz fuer grundfalsch. Ohne zwingende Gruende holt man sich einfach nicht zwei unterschiedliche Technologien ins Boot, und auch noch verteilt auf verschiedene Prozesse - so das man dann inter-prozess-kommunikation betreiben muss. Natuerlich geht das alles, aber es macht die Sache nicht einfacher.

Und dann - zum wiederholten male - deine ganzen Mutmassungen & Erfahrungsberichte basierend auf Wordpress und Co. haben mit dem Problem hier nichts zu tun. Du extrapolierst von *Anwendungen* die in PHP geschrieben sind (Worpress, CMS, whatever) auf Frameworks in Python. Und das ist Unsinn. Natuerlich gibt es auch in Python & auf Basis von Frameworks geschriebene Webanwendungen, uA CMSse und was nicht alles - und fuer die gelten natuerlich andere Regeln.

Aber ein Python-Framework verhaelt sich zu einer Webanwendung wie PHP zu Wordpress. Wenn du glaubst, pures PHP ist fuer dein Problem geeignet, dann sind es auch die Frameworks.

Natuerlich kann man bei Django mit ORM + Admin-Oberflaeche jede Menge Dinge benutzen, die schon fertig sind. Aber man *muss* es nicht, bzw. betreibt seine eigenen, komplett selbst-gebauten Seiten neben denen von Django-Admin. Das ist genauso als ob du eine Datei "meinetollephpdatei.php" in deine wordpress-installation legst - wenn du die aufrufst, dann kommt da auch einfach nur das raus, was drinsteht.

Und darum zum nun hoffentlich letzten mal: Templates sind pures, simples HTML. Sonst nix. Damit ist *alles* moeglich was mit HTML moeglich ist, und ungefaehr genauso einfach oder eben schwierig.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Coder hat geschrieben:Selber gebaut klappte es. Den Wordpress und den phpBB konnte ich jedoch nicht zu diesem Layout und dem gewünschten Menüsystem überreden.
Du solltest ein CMS wie Wordpress oder phpBB nicht mit einem Framework für Softwareentwicklung vergleichen.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

eine Template Engine unterstützt dich nur bei der Ausgabe. Z.B. dass du eine Liste (<ol>,<ul>) über eine Schleife oder Iteration über irgendwas erstellst und nicht alle Punkte händisch tippen musst. Oder man kann Variablen aus deinem Python Prog direkt übernehmen. Eine Template Engine kreiert selber kein HTML. D.h. was du auf dem Bildschirm zu sehen bekommst hängt am Ende von deinen eigenen HTML/CSS Fähigkeiten hat.

Gruß, noisefloor
Coder
User
Beiträge: 19
Registriert: Dienstag 14. Juni 2011, 00:13

Ah ok, danke.
Ich habe das dann etwas falsch verstanden, was Django und co machen.

Ich probiere dann mal, mein Layout auf Bottle umzusetzten. Wie sähe das aus, wenn ich das dann irgendwann mal auf Django bringen wollte? Wäre das viel Arbeit?
In der Lernphase will ich nämlich auf jeden Fall bei dem relativ einfachen Bottle bleiben.

Noch was:
Ein CMS brauche ich eigentlich nicht wirklich, da ich eh überwiegend nur Static content habe.
Forum und Shopsystem wäre aber ganz nützlich. Eventuell auch noch so was wie ein Wiki.
Gibts eigentlich gute Open Source Foren, Shop und Wikisysteme auf Pythonbasis? Oder sollte ich da bei phpBB und osCommerce bleiben und diese - wie ursprünglich vorgesehen - einfach nur verlinken?
Beim Forum und beim Shop habe ich beim Layout nicht so viel "geschiss" gemacht, da habe ich "nur" ein normales Template gebaut, was hauptsächlich aus Farbanpassungen bestand. Da legte ich auch keinen Wert drauf, dass es wie selbstgemacht aussieht.

Ursprünglich bestand das Konzept darin, die "Homepage", das "Accountmanagement" und ein paar andere Sachen selbst zu machen, oder zumindest wie "selbstgemacht" aussehen zu lassen. Shop, Forum und eventuell Wiki sollte über das horizontale Menü einfach verlinkt werden.
Das Vertikale Menü mit mehreren Ebenen und Ausklappfunktion war für die eigenen Inhalte vorgesehen.


P.S. Das Accountmanagement besteht darin, dass darüber die Accounts in den verschiedenen Systemen automatisch angelegt und verwaltet werden (z.B. VPN Server, FTP Server, Forum etcpp, dass das Bonussystem funktioniert und Nutzungsstatistiken erzeugt werden.
Erst mal sollte alles nur "Intern" laufen, auf einer Art Luxus Router und erst mal mit Family und Freunden testen.
Später mal will ich aber kommerziell werden, mit Tokenverkauf, Zubehör und Hardwareverkauf und Supportforum/Supportwiki. Das dauert noch, zuerst muss ich die Ausbildung machen und das Knowhow erwerben.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Python Wiki: MoinMoin ist recht verbreitet und wird von vielen "großen" genutzt. Trac hat IMHO auch ein ganz nettes Wiki, hat aber eben noch mehr an Bord.

Zum Thema Foren-Software: nicht das ich wüßte... aber irgendwann wird Inyoka sicherlich OpenSource. ;-) Dann hast du ein gutes Wiki und Forum im Kombipack.

Gruß, noisefloor
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

noisefloor hat geschrieben: Zum Thema Foren-Software: nicht das ich wüßte... aber irgendwann wird Inyoka sicherlich OpenSource. ;-) Dann hast du ein gutes Wiki und Forum im Kombipack.
Duke Nukem ist ja auch noch erschienen! :twisted:
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Hyperion hat geschrieben:
noisefloor hat geschrieben: Zum Thema Foren-Software: nicht das ich wüßte... aber irgendwann wird Inyoka sicherlich OpenSource. ;-) Dann hast du ein gutes Wiki und Forum im Kombipack.
Duke Nukem ist ja auch noch erschienen! :twisted:
Und war dann (auch) Mist ...
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

/me hat geschrieben:
Hyperion hat geschrieben:
noisefloor hat geschrieben: Zum Thema Foren-Software: nicht das ich wüßte... aber irgendwann wird Inyoka sicherlich OpenSource. ;-) Dann hast du ein gutes Wiki und Forum im Kombipack.
Duke Nukem ist ja auch noch erschienen! :twisted:
Und war dann (auch) Mist ...
Hm... die Previews waren doch eher positiv! Gibts denn schon Tests in Zeitschriften?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Hyperion hat geschrieben:Hm... die Previews waren doch eher positiv! Gibts denn schon Tests in Zeitschriften?
Jetzt wird es aber völlig OT. :-) Heise schreibt im Newsticker "Den Entwicklern ist hier eine herrliche Hommage an die Ego-Shooter der 90er gelungen [...]". Bei Gamestar fängt das mit "Duke Nukem Forever verdient wie kein anderes Spiel das Prädikat »Old School«" so ähnlich an, aber dann wird Klartext geredet: "Im Vergleich zum Vorgänger hat sich spielerisch kaum etwas getan, und auch die Grafik ist längst nicht mehr zeitgemäß.". Weiteres bitte direkt dort weiterlesen.
Antworten