bestehendes projekt in django einpflegen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Donnerstag 24. Juli 2008, 09:18

Hallo Leute,
ich bin Django Neuling, wurde mir empfohlen und ich bin echt begeistert von der Idee und den schon vorhandenen Funktionen.

Ich hatte Ursprünglich ein kleines Webinterface entwickelt in mod_python und das läuft auch soweit, bis ich gemerkt habe das es ohne Sessions einfach nicht geht. Nach meinen gescheiterten versuchen mit Session Lösungen bin ich dann wie gesagt an Django weiter empfohlen worden und da klappt das soweit alles. Jetzt versuche ich mein Projekt da einzupflegen und scheitere daran irgendwie.

Gibt es Möglichkeiten, meinen schon geschrieben Code irgendwie da einzubauen? Ich hatte vorher eben mit POST an ein script namens interface.py in dem cgi-bin Verzeichnis geschickt. Mein Interface wurde dynamisch mit javascript aufgebaut, was die Infos ebenfalls aus einem script bekommen hat usw.

Im Moment scheitere ich leider schon in der Pfadangabe von den Scripten. Muss ich die alle in urls.py definieren? Hab gelesen das ich die Absolut angeben muss, aber das klappt irgendwie nicht so :-/

Würd mich freuen, wenn mir da jemand ein wenig unter die Arme greifen kann.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 24. Juli 2008, 10:40

würmchen hat geschrieben:Gibt es Möglichkeiten, meinen schon geschrieben Code irgendwie da einzubauen?
Ja, natürlich nicht 1:1 aber es ist durchaus möglich bereits geschriebenen View-Code anzupassen.
würmchen hat geschrieben:Im Moment scheitere ich leider schon in der Pfadangabe von den Scripten. Muss ich die alle in urls.py definieren? Hab gelesen das ich die Absolut angeben muss, aber das klappt irgendwie nicht so :-/
Nein, es ist im großen und ganzen egal wo du die URLs definierst, sofern der URL-Mapper davon weiß. Und klappt nicht so ist alles andere als eine Information bei der man dir irgendwie helfen kann.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Donnerstag 24. Juli 2008, 10:50

Ok, hast ja recht, sollte mit den Infos nicht so knapp sein.

Wurde im django IRC auf die static files hingewiesen, so hab ich jetzt mein stylesheet wieder "gefunden"...

Allerdings dachte ich ich kann da auch einfach einen cgi-bin ordner definieren und meine vorhanden scripte da einarbeiten, aber das geht anscheinend nicht.


hm, tja, ich denke ich muss das dann als django views umarbeiten, hab da aber jetzt in der sekunde noch keine idee wie ich vorgehen soll.

ich hab in meiner seite viel mit javascript und ajax gearbeitet. mein interface schickt bei jeder aktion einen request zu einem python script, was dann html oder json zurück geben soll...

hm, mein problem ist, das ich gerade nicht mal weiß nach was ich genau fragen soll...

EDIT:
Ok, ich versuch gerade mein Script, was mir ein JSON Objekt zurück geben soll, in einen view zu stecken. In dem Original Script habe ich in der Main methode das cgi.FieldStorage objekt ausgelesen und eben anhand von dem übergebenen Parameter das Objekt zurück geliefert. Wie mache ich das hier? Ich meine, muss ich dann ein Template erstellen was eben einen content-type: application/JSON hat oder wie macht man dann sowas? :-/
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 24. Juli 2008, 11:24

würmchen hat geschrieben:Allerdings dachte ich ich kann da auch einfach einen cgi-bin ordner definieren und meine vorhanden scripte da einarbeiten, aber das geht anscheinend nicht.
Das macht ja auch keinen Sinn, da du von dort aus weder auf die Templetes noch auf die Models in Django zugreifen könntest.
würmchen hat geschrieben:EDIT:
Ok, ich versuch gerade mein Script, was mir ein JSON Objekt zurück geben soll, in einen view zu stecken. In dem Original Script habe ich in der Main methode das cgi.FieldStorage objekt ausgelesen und eben anhand von dem übergebenen Parameter das Objekt zurück geliefert. Wie mache ich das hier? Ich meine, muss ich dann ein Template erstellen was eben einen content-type: application/JSON hat oder wie macht man dann sowas? :-/
Django kann selbst Daten als JSON serialisieren, da nutzt man keine Templates.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 24. Juli 2008, 11:40

Ich würde mal vorschlagen das django tutorial durchzuarbeiten oder zumindest durchzulesen ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Donnerstag 24. Juli 2008, 12:10

jens hat geschrieben:Ich würde mal vorschlagen das django tutorial durchzuarbeiten oder zumindest durchzulesen ;)
Du wirst lachen, das hab ich durchgearbeitet und mein poll funktioniert und wird mittlerweile sogar geprüft ob der user schon seinen vote abgegeben hat und und und...

ich habe halt gehofft, das ich ein großteil von meinem code übernehmen kann, da mein code ja eigenen html produziert, dachte ich, es brauch nicht wirklich ein template...

mir ist klar was django ist und für was es gut ist und für was es gedacht ist (schöner satz ;-)) aber ich hab halte gehofft das ich trotzdem meinen code weiter nutzen kann, ohne ihn in das komplette django kleid zu packen, brauchte ja im prinziep nur die sessions :-)
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 24. Juli 2008, 12:42

OK, ich dachte nur das es noch neu für dich ist ;)

Also in PyLucid habe ich auch ein bestehendes Projekt nach django "portiert" deswegen ist es nicht in allen Punkten "django-like", ich wollte halt nicht einfach die Konzepte hinter PyLucid komplett in die Tonne schmeißen... Ist allerdings alles in allem sehr viel arbeit.
Wenn deine Geschichte noch nicht so groß ist, dann würde ich evtl. wirklich von Null anfangen und erstmal versuchen alle relevaten Teile von django nutzten, wie z.B. die Templates. Du wirst schon selber sehen, welche Code Teile du dann aus dem alten Projekt übernehmen kannst...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Donnerstag 24. Juli 2008, 12:51

jens hat geschrieben:OK, ich dachte nur das es noch neu für dich ist ;)

Also in PyLucid habe ich auch ein bestehendes Projekt nach django "portiert" deswegen ist es nicht in allen Punkten "django-like", ich wollte halt nicht einfach die Konzepte hinter PyLucid komplett in die Tonne schmeißen... Ist allerdings alles in allem sehr viel arbeit.
Wenn deine Geschichte noch nicht so groß ist, dann würde ich evtl. wirklich von Null anfangen und erstmal versuchen alle relevaten Teile von django nutzten, wie z.B. die Templates. Du wirst schon selber sehen, welche Code Teile du dann aus dem alten Projekt übernehmen kannst...
Naja, sind bis jetzt ungefähr netto 900 Zeilen code, dummerweise das meiner diplomarbeit die ich in rund 8 wochen abgeben will :-)
bedeutet also Nachtschichten... aber ich werds versuchen...

@Leonidas
Ich versuch gerade dieses json zum laufen zu bekommen was du mir geschickt hast, aber ich bekomm das irgendwie nicht hin. Ich hab jetzt den neueren code kopiert und weiß gerade nicht so recht wo er den eingefügt hat damit das so läuft wie er das beschreibt. Eine Klasse util gibt es noch nicht. Irgendwie hat der da sehr schluderig dokumentiert :-) oder ich bin blind.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 24. Juli 2008, 13:25

Ich denke ``util`` stammt aus ``django.util``, aber schau dir mal die Django-Doku an.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Freitag 25. Juli 2008, 08:04

Ich hab jetzt mit dem serialize ein rumgespielt und ich vermisse eine Funktion, vielleicht kann mir da jemand einen Tipp geben, notfalls muss ich es selbst bauen.

Ich kann mir ja dann mit serized mein Poll Objekt ausgeben lassen. Es gibt aber auch Choices die dazu gehörne, die haben dann den gleichen foreignkey wie der Poll.
Kann man die direkt mit ausgeben lassen, oder muss ich mir das in einer Funktion zusammen schreiben? Im Moment kann ich nur Objekte einer Klasse ausgeben lassen.
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

Freitag 25. Juli 2008, 13:08

Hm, ich brauch hier bei einer Sache noch Hilfe...

Ich hab vorher mit cgi und cgi.Fieldstorage mein Formular übergeben, verarbeitet usw.

Jetzt komm ich irgendwie nicht mehr an die Daten von dem Formular...

Ich hab die vorher mit einem AJAX request geschickt. und zwar einfach das ganze Formular mit der Funktion serialize (jquery) an mein python script.

Jetzt kann ich aber cgi.FieldStorage nicht mehr benutzen und mit request.POST komm ich auch nicht weiter.

Hat jemand Erfahrung mit jquery?

Code: Alles auswählen

        $("#submit").livequery("click",function(){
                $.ajax({
                        type: "POST",
                        timeout: 60000,
                        data: "form="+$("form").serialize(),
                        url: "/interface/interface/",
                        success: function(data){
                                $("#result").html(data);
                        }
                })
        })
Das sollte das komplette Formular an mein view schicken und eben in der variable "form" alles drin stehen haben...

wenn ich aber versuche mit request.POST['form'] drauf zu zu greifen, geht das nicht.



EDIT:
Ok, das hab ich soweit auch hin bekommen, das ich mir jetzt mit "request.raw_post_data" den String geben lasse, jetzt muss ich den nur noch auseinander nehmen wie ich das vorher schon gemacht habe.

Kennt jemand eine Methode um solche Strings zu parsen?
Antworten