Hallo,
in meinem Studium sollen wir anhand eines Projektes Python lernen. In C/C++ habe ich schon 2 Jahre Erfahrung.
Das Projekt lautet wie folgt:
""Datenhochlader"
* Generieren eines individuellen Logins + Passwords beim ersten Einloggen
* Hochladen von Daten in zu definierende Strukturen, die dann auch nur von dem Hochladenden eingesehen werden können
* Export über eine XML-Datei, die aus einer Kombination von Struktur + Datei (oder Link auf Datei) besteht
* Es muss möglich sein, hochgeladene Dateien durch neue Versionen zu ersetzen, wobei die alten Versionen über eine History-Funktion zuänglich bleiben sollen
Kommentar: Eventuell könnte hier eine Kombination mit svn + Apache Authentication sinnvoll sein. Wäre zu prüfen"
Ich bräuchte ein Paar Ansätze wie man hier beginnen könnte, welche Bibliotheken / Techniken man braucht um das tun zu können.
Projekt Dateihochlader
Django + SVN-Bindings.
Das sollte eigentlich reichen
Alternativ:
Plone und das dann ein `wenig` abspecken
Oder, sogar ernst gemeint:
Zumindest die ZODB nutzen, die hat ne Versionierung und ist hierarisch aufgebaut, das würde ganz ordentlich passen.
Alles weitere sagt Google.
btw:
C oder C++, oder jeweils 2 Jahre?
Das sollte eigentlich reichen
Alternativ:
Plone und das dann ein `wenig` abspecken
Oder, sogar ernst gemeint:
Zumindest die ZODB nutzen, die hat ne Versionierung und ist hierarisch aufgebaut, das würde ganz ordentlich passen.
Alles weitere sagt Google.
btw:
C oder C++, oder jeweils 2 Jahre?
Man kann nicht alles in Datenbanken speichern, große Binärdateien z.B. eignen sich eher schlecht. BLOBs in Datenbanken abzulegen ist eher schlechter Stil.
Stünde ich vor der Aufgabe, sowas zu *realisieren* (nicht zu *entwicklen*), dann würde ich einfach nur Trac als SVN-Frontend aufsetzen und eventuell eine kleine Webanwendung für Commits schreiben. Zusätzlich noch ein Plugin, welches die SVN-Dateisystemstruktur als XML exportiert (was auf eine Kombination von ElementTree und os.walk in einem lokalen Checkout hinausläuft ).
Das wird aber kaum das sein, was die Uni fordert... also bleibt wohl nur, ein paar existierende Bibliotheken miteinander zu verbinden. SVN bringt Python-Bindings mit, für Webprogrammierung gibt es Werkzeug, und XML verarbeite ich am liebsten mit lxml...
Stünde ich vor der Aufgabe, sowas zu *realisieren* (nicht zu *entwicklen*), dann würde ich einfach nur Trac als SVN-Frontend aufsetzen und eventuell eine kleine Webanwendung für Commits schreiben. Zusätzlich noch ein Plugin, welches die SVN-Dateisystemstruktur als XML exportiert (was auf eine Kombination von ElementTree und os.walk in einem lokalen Checkout hinausläuft ).
Das wird aber kaum das sein, was die Uni fordert... also bleibt wohl nur, ein paar existierende Bibliotheken miteinander zu verbinden. SVN bringt Python-Bindings mit, für Webprogrammierung gibt es Werkzeug, und XML verarbeite ich am liebsten mit lxml...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
SVN hat die Möglichkeit, über WebDAV zugriff auf Ressourcen zu bieten, das was in der Wikipedia steht meint vermutlich eher Delta-V (das ist der Modus in dem SVN unsagbar langsam sich seine Dateien herunterlädt).Laines hat geschrieben:Ich habe an sowas wie an WebDav gedacht. In dem Wikipedia einrag steht auch "Zudem ist eine Versionskontrolle implementiert." ist damit sowas wie svn gemeint? Hat jemand Erfahrungen damit?
Eine Alternative zu SVN könnte Git sein, wie im Artikel Using Git as a versioned data store in Python beschrieben wird. Ich glaub, SVN wäre mir für die Aufgabe auch zu langweilig
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Letztens wurde das scheinbar durch ditz populär, ticgit ist eine weitere Software die auf Git aufbaut. Nur eben in Ruby (da ist git issues vielleicht sogar eine gute Idee).
Hmm, es gibt einfach zu viele gute DVCS als das man sich für irgendeines irgendwann entscheiden könnte. Immer wenn eines ein Killerfeature hat, dann rüstens die anderen mehr oder weniger gut nach (oder sogar auch besser).
Hmm, es gibt einfach zu viele gute DVCS als das man sich für irgendeines irgendwann entscheiden könnte. Immer wenn eines ein Killerfeature hat, dann rüstens die anderen mehr oder weniger gut nach (oder sogar auch besser).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Genaulunar hat geschrieben: Das wird aber kaum das sein, was die Uni fordert... also bleibt wohl nur, ein paar existierende Bibliotheken miteinander zu verbinden. SVN bringt Python-Bindings mit, für Webprogrammierung gibt es Werkzeug, und XML verarbeite ich am liebsten mit lxml...
Also sehe ich das richtig das es keinen Client - Server gibt sondern das ganze als Webanwendung laufen soll... Aber wie kann ich Python als Webanwendung laufen lassen? Mit Django als Unterbau? Soweit ich weis kann aber auch Apache Python interpretieren?!?! Und ich brauch ja auch eine art Oberfläche mit der ich die Daten Hochladen kann?!
Ich glaube Django + svn währe hier die schnellste Lösung, oder irre ich mich?
Das stichwort hier ist WSGI. Programmiere dein Programm gemäß WSGI (oder in einem der Frameworks, die WSGI können), und du kannst es per cgi, fcgi, scgi, mod_python, mod_wsgi etc im Web verfügbar machen.Aber wie kann ich Python als Webanwendung laufen lassen?
Hi,
ich habe jetzt versucht es hin zu bekommen, aber es funktioniert nicht so wie ich will.
Könnte mir bitte Jemand ein Beispiel Zeigen?
Hier mal meine Ansätze:
models.py
views.py
upload.html
ich habe jetzt versucht es hin zu bekommen, aber es funktioniert nicht so wie ich will.
Könnte mir bitte Jemand ein Beispiel Zeigen?
Hier mal meine Ansätze:
models.py
Code: Alles auswählen
from django.db import models
class File(models.Model):
filename = models.FileField(upload_to='django/%Y/%m/%d')
class Admin:
pass
Code: Alles auswählen
from hochlader.models import *
from settings import MEDIA_ROOT
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response, HttpResponse
from datetime import datetime
import os
import string
import re
def upload(request):
if request.method == "POST":
file = None
filename = None
filename = request.FILES['filename']['filename']
file = request.FILES
return HttpResponse('Hallo!')
return HttpResponse(request.FILES['filename'])
''' file.save_FOO_file(filename, raw_contents) '''
else:
return render_to_response('upload.html')
Code: Alles auswählen
<html>
<html>
<head>
<title>Files Upload</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<p>Browse file: <br />
<input type="file" name="filename" size="40" maxlength="500"/></p>
{% if nofile %}
<p class="error">* You have to choose a file to upload!</p>
{% endif%}
<p><input type="submit" value="Upload file"/></p>
</form>
</body>
</html>
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Die Frage ist was passiert und was du erwartest. In deinem Beispiel legst du ja nur Referenzen zu den Files an, die dann verschwinden wenn die Funktion beendet. Was das geplant? Namen mit ``None`` zu initialisieren ist völlig unnötig und zwei ``return`` hintereinander bringen auch nichts.Laines hat geschrieben:ich habe jetzt versucht es hin zu bekommen, aber es funktioniert nicht so wie ich will.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Auf der HTML Seite soll die Datei die hochgeladen werden soll, ausgewählt werden. Durch drücken auf den Button soll sie schließlich hochgeladen werden.
Das war es schon
Ich habe einfach den letzten stand von meinen Versuchen hier gepostet... Hätte ihn etwas "bereinigen" müssen...
Das war es schon
Ich habe einfach den letzten stand von meinen Versuchen hier gepostet... Hätte ihn etwas "bereinigen" müssen...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich denke dass passiert jetzt auch. Wird hochgeladen und der Server verwirft die Datei.Laines hat geschrieben:Auf der HTML Seite soll die Datei die hochgeladen werden soll, ausgewählt werden. Durch drücken auf den Button soll sie schließlich hochgeladen werden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Der nächste schritt währe jetzt natürlich das er die Datei nicht verwirft.
Wie würde das aussehen?
Ich hatte das mal mit versucht...
Wie würde das aussehen?
Ich hatte das mal mit
Code: Alles auswählen
file.save_FOO_file(filename, raw_contents)
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Code: Alles auswählen
deinmodel_instanz.save_datenbankfeld_file(dateiname, inhalt)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hallo,
das Uploaden klapt jetzt. Danke! Ich würde gerne die Ordner -struktur in der ich die Daten Speichern will auf der HTML Seite abbilden, gibt es das was vorgefertigtes oder hat jemand eine Idee so etwas zu realisieren? Im simpelsten Fall ein Pull Down menue... In dem ich die Ordner Auswählen kann und alle enthaltenen Dateien werden mir angezeigt...
Des weiteren möchte ich über die HTML seite Unterordner in der Ordner Struktur erstellen können.
das Uploaden klapt jetzt. Danke! Ich würde gerne die Ordner -struktur in der ich die Daten Speichern will auf der HTML Seite abbilden, gibt es das was vorgefertigtes oder hat jemand eine Idee so etwas zu realisieren? Im simpelsten Fall ein Pull Down menue... In dem ich die Ordner Auswählen kann und alle enthaltenen Dateien werden mir angezeigt...
Des weiteren möchte ich über die HTML seite Unterordner in der Ordner Struktur erstellen können.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das sind gleich ein paar Haufen Dinge zu Implementieren. Du kannst evtl. die ein paar Sachen vom PyLucid Dateimanager abschauen:
http://pylucid.net:8080/pylucid/browser ... manager.py
Screenshot: http://www.flickr.com/photos/jensdiemer ... 9/sizes/o/
http://pylucid.net:8080/pylucid/browser ... manager.py
Screenshot: http://www.flickr.com/photos/jensdiemer ... 9/sizes/o/
Danke für den Link... Das Läuft jetzt auch alles soweit
Auf der html Seite kann man jetzt natürlich verschiedenen Aktionen ausführen. Jede Aktion hat ihren eigenen Button. Wie finde ich heraus Welcher Button gedrückt wurde? Namen haben sie ja alle.
Wenn es geht bitte mit einem kurzen Beispiel Code.
Idela währe natürlich wenn so etwa sgehen würde, nur damit ich verstehe was ich meine:
Auf der html Seite kann man jetzt natürlich verschiedenen Aktionen ausführen. Jede Aktion hat ihren eigenen Button. Wie finde ich heraus Welcher Button gedrückt wurde? Namen haben sie ja alle.
Wenn es geht bitte mit einem kurzen Beispiel Code.
Idela währe natürlich wenn so etwa sgehen würde, nur damit ich verstehe was ich meine:
Code: Alles auswählen
if 'ButtonName' in request.input:
Mache das was der Button tun soll