Ist Python nur für das Erstellen von Backends bei der Erstellung von Websites?

3166
Léo Léopold Hertz 준영

Ich habe keine Website gesehen, die von Python so erstellt wurde, dass die URL der Website am Ende .py enthält. Ich habe nur index.htmlund gesehen index.php, aber manchmal nichts wie in SO. Ich weiß, dass man das Ende irgendwie mit .htaccess -file verstecken kann.

Ich würde gerne den Grund dafür wissen.

Warum endet keine Website mit .py?

4
Weitere Informationen zu Python +++ erhalten Sie unter stackoverflow.com pavsaund vor 15 Jahren 5
Eine verwandte Frage steht jetzt unter http://stackoverflow.com/questions/1185248/is-python-only-for-building-backends-when-you-need-to-write-sql-by-hand zur Verfügung Léo Léopold Hertz 준영 vor 15 Jahren 1

9 Antworten auf die Frage

17
hayalci

Eine gute URL wäre unabhängig von Technologien. Daher ist eine Erweiterung von .php oder .py oder .rb etwas zu verhindern. Meistens behandeln Python-Frameworks (wie Turbogears) das URL-Parsing. Das im Hintergrund ausgeführte Python-Programm ruft alle Parameter in einer schönen Datenstruktur auf, sodass in diesem Fall keine Dateierweiterung angezeigt wird.

Siehe "coole URIs ändern sich nicht" von Tim Berners-Lee

8
Zifre

Nun, wahrscheinlich verstecken die meisten Leute die Erweiterung, weil dies der intelligentere Weg ist. Wenn Sie also sagen, dass Sie auf PHP umgestellt haben (nicht, dass Sie möchten ...), müssen Sie die Erweiterungen nicht ändern.

Es gibt jedoch Seiten mit .pyErweiterungen (mehrere Teile von Google haben es).

Die besseren Fragen sind: Warum bestehen die meisten ASP.NET- und PHP-Benutzer darauf, die Erweiterungen beizubehalten?

Ihre Antwort lässt vermuten, dass es einfacher ist, die Erweiterung in Python als in PHP und ASP.NET zu entfernen. --- ** Welches Python-Modul stellt die Funktionalität bereit? ** Léo Léopold Hertz 준영 vor 15 Jahren 0
@Masi: Es gibt kein Modul, das die Erweiterung etwas entfernt. Tatsächlich gibt es in Python keine Erweiterung, die man loswerden kann. Anders ausgedrückt muss die Erweiterung in der URL nicht der Erweiterung der Datei entsprechen. Wenn Ihre Web-App also aus .py-Dateien besteht, gibt es keinen Grund, warum Ihre URLs auf .py enden müssen. Dies ist unter Umständen nicht sinnvoll, wenn Sie an PHP gewöhnt sind, da PHP die Erweiterung der URL mit der Dateierweiterung identisch ist (gut, Sie können das umgehen, aber das ist nicht besonders einfach). es ist das gleiche in ASP, das ich vermute. David Z vor 15 Jahren 2
4
dbr

Normalerweise wird auf PHP-Skripts direkt zugegriffen, ähnlich wie bei einem CGI-Skript. Grundsätzlich greifen Sie wie normale Dateien auf das Skript zu. Der Webserver fängt diese Anforderung ab, führt das Skript aus und gibt die Ausgabe anstelle des Dateiinhalts zurück.

Die meisten Python-Frameworks verfügen über eigene Routing-Systeme, in denen Sie etwas definieren.

urls = ( ('^/article/(\d+)$', ArticleController), ('^/user/(.+?)$', UserController) ) 

..dann würden Sie so etwas zugreifen ..

http://example.com/router.py?uri=article/123 

..und es würde über die URL - Mapping definiert werden ausgeführt urls, und die Anforderung an die entsprechende Klasse schicken ... aber das hat router.pyin allen URLs Teil ist ein bisschen beschissen, so dass Sie verwenden mod_rewriteumleiten /(.*)zu /router.py/$1(entweder über .htaccess, Apache Konfiguration etc)

Sie können dasselbe mit PHP oder einer anderen Sprache tun - genau so arbeitet CodeIgniter (ein PHP-Framework)

Wenn Sie völlig verrückt sind, Sie könnten nutzen mod_rewriteund Karte /user/(\d+).pyzu /ViewController.php?id=$1oder etwas, aber es ist in der Regel kein Sinn, eine gefälschte Erweiterung auf der Seite zum Hinzufügen (es gibt ein paar Ausnahmen, vor allem der Rückwärtskompatibilität und den Zugriff auf Daten in verschiedenen Formaten in einer API)

Sie können den "PHP-Weg" auch mit Python ausführen. Wenn Sie jede Seite als separates CGI-Skript schreiben, verwenden nur die meisten Python-Frameworks die oben beschriebene MVC-Konfiguration (oder MVC-ähnliche Anordnung).

3
Tadeusz A. Kadłubowski

Was auf Ihren Computer übertragen wird, ist HTML (möglicherweise mit CSS- und JavaScript-Code). CSS und JavaScript werden nicht per se angezeigt, daher werden diese Erweiterungen nicht angezeigt. HTML ist der Inhalt, der angezeigt werden soll. Sie sind also daran gewöhnt, die Erweiterung .html zu verwenden.

Nun, wen kümmert es, wenn das HTML-Dokument manuell in Notepad geschrieben wurde oder mit einigen Programmen, die gerade vor 0,1 Sekunden ausgeführt werden, dynamisch zusammengefügt wird. Das ist kein Unterschied.

PHP wird häufig verwendet, um HTML-Dokumente auf diese Weise on-the-fly zu erstellen. Das Hinzufügen einer .php-Erweiterung zu HTML-Dokumenten, die mit einem PHP-Programm erstellt wurden, ist üblich und bedeutet nicht viel. Der Endbenutzer sieht ein HTML-Dokument im Browser.

Der Webserver benötigt einige Informationen, um ein HTML-Dokument zu finden, das bereitgestellt werden soll - ein handgemachtes HTML-Dokument von der Festplatte lesen? Erstellen Sie ein Programm, indem Sie ein PHP-Programm ausführen. Die Erweiterung .php kann als Hinweis verwendet werden. Das ist nur eine Frage der Serverkonfiguration.

Wenn Sie daran interessiert sind, das Web mit Python zu bedienen, schauen Sie sich das Projekt Django an

3
hasen

Django, das (wahrscheinlich) populärste Framework für Webapps / Websites in Python, verwendet Url-Mapping für Python-Funktionen. Wenn Sie also anfordern /url/, ruft es tatsächlich eine Funktion auf, die der Verarbeitung von Anforderungen an diese URL zugewiesen ist. Anders ausgedrückt gibt es keine 1-zu-1-Zuordnung zwischen URLs und .py-Dateien.

Update (pro Kommentar):

In einer typischen PHP-Website würde die URL in etwa so aussehen /path/to/file.phpund auf diese Anforderung hin führt der Webserver die PHP-Datei aus und gibt ihre Ausgabe als HTTP-Antwort zurück .

In Django wird eine URL des Formulars /path/of/url/vom Framework abgefangen. Sie entspricht eigentlich keiner Datei, es ist ein einfacher Teil der HTTP-Anforderung, und das Django-Framework verfügt über einen URL-Dispatching-Mechanismus, der eine URL einer Normalität zuordnet Funktion. Wenn eine Funktion gefunden wird, die mit dieser Art von URL behandelt wird, ruft sie diese auf und gibt die HTTP-Antwort zurück, die die Funktion zurückgegeben hat.

http://docs.djangoproject.com/de/dev/topics/http/urls/

** Kennen Sie ein Video- / Leitfaden- / Codebeispiel, das Ihren Standpunkt der 1-zu-1-Zuordnung veranschaulicht? ** Ich würde gerne wissen, was Sie meinen. Léo Léopold Hertz 준영 vor 15 Jahren 0
2
Loïc Wolff

Hier können Sie sehen, dass Google die Erweiterung .py verlassen hat.

Danke, dass Sie darauf hingewiesen haben! - Es ist immer noch schwer zu sehen, da es nicht am Ende allein ist. Léo Léopold Hertz 준영 vor 15 Jahren 0
1
Toby Allen

Nicht direkt auf Ihre Frage bezogen, aber nicht nur Websites werden mit Python erstellt. Die gesamte KI-Engine für EVE online (ein MMP-Weltraumspiel) wurde, glaube ich, in Python geschrieben.

1
Toby Allen

Ebenfalls

Google-Suche .py

9. Ergebnis http://schmidt.nuigalway.ie/cs103/python/graphics.py

Mindestens eine Website mit einer Datei, die auf .py endet - es gibt wahrscheinlich mehr.

Das ist keine Website: es ist ein veröffentlichtes Skript. Telemachus vor 15 Jahren 1
Dies ist die Seite: http://schmidt.nuigalway.ie/cs103/python/ Telemachus vor 15 Jahren 0
1
CesarB

Dieser Unterschied wird hauptsächlich durch die Art und Weise verursacht, in der die Anforderung gesendet wird.

Die Websites, die eine Dateierweiterung aufweisen, werden meist direkt über das Dateisystem abgesetzt. Wenn Sie einen URL-Pfad wie sehen /example/index.php, wechselt der Webserver in das exampleVerzeichnis unter dem Dokumentstamm, öffnet die index.phpDatei und führt dessen Inhalt aus (etwas einfacher). Da sie das Dateisystem durchlaufen, verwenden sie in der Regel den gesamten Dateinamen einschließlich der Erweiterung.

Die Websites, die keine Dateierweiterung aufweisen, werden meist auf andere Weise ausgeführt. In Django gibt es zum Beispiel (etwas vereinfacht) eine Tabelle, die den URL-Pfad dem Code zuordnet, der die Anfrage verarbeitet. Da hier kein Zusammenhang zwischen dem URL-Pfad und dem Dateisystempfad besteht, kann das Mapping völlig willkürlich sein und es gibt keinen Grund, eine "gefälschte" Erweiterung hinzuzufügen.

Es gibt Ausnahmen zum ersten Fall. So können mod_rewriteSie beispielsweise den URL-Pfad neu zuordnen und so die Dateierweiterung einfach ausblenden (dies ist sehr häufig).

Der Grund, warum Sie nicht oft den ersten Fall mit Python sehen, ist der, dass die meisten Benutzer Web-Frameworks verwenden, wenn Sie mit Python Websites erstellen, die ihre eigene Verteilung durchführen. Dies ist auch bei PHP üblich ( Drupal ist ein übliches PHP-Framework), aber das Erstellen von "Standalone" -Seiten (ohne Framwork) ist bei PHP häufiger als bei Python.