Django macht neue Browser Instanz auf

Django, Flask, Bottle, WSGI, CGI…
Antworten
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Hallo zusammen,

ich rufe unter Javascript folgende Funktion auf, wenn ich auf einen Button klicke:
open("{% url Home.views.set %}", true);
was auch funktioniert. Allerdings macht mir der Browser immer eine neue Seite auf. Meine Urls.py sieht wie folgt aus:
url(r'^set/$', 'Home.views.set',
name='/home/Susanne/Homepage/Home.views.set'

meine Views.py sieht wie folgt aus:

Code: Alles auswählen

def set(request):
    print "Testen der Html Seite"
    return render(request,'Home/home.html')
kann mir jemand sagen was ich falsch mache?

vielen Dank im voraus
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Was erwartest du den für ein Verhalten?
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

hätte eigentlich erwartet dass er auf meiner Seite bleibt.
stattdessen macht er eine Neue seite auf.
will doch nur beim klick auf einen Button eine Funktion ausführen. will nicht die Seite wechseln
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich erwarte, dass die Javascript-Funktion tut, was in der Dokumentation steht:
window.open(url, fenstername): Öffnet ein neues Fenster.
Zum Glück hält sich Dein Browser an den Standard.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Und wie macht man, dass nur die Funktion aufgerufen wird?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

ich versteh Dich nicht. Du rufst doch die open-Funktion auf.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Will nur damit eine Funktion ausgeführt wird wenn ich einen Button drücke
BlackJack

@erdmulch: Du musst die URL abfragen ohne dabei auf Browserseite ein neues Fenster zu öffnen. Ich würde ja einfach eine AJAX-Anfrage machen und deren Ergebnis ignorieren.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

Und wie macht man sowas? Dachte das würde mit der post methode funktionieren
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@erdmulch: wie sieht denn Deine bisherige html-Seite aus?
welche Funktion soll wann aufgerufen werden?

ps: Deine url-Namen sehen ja immer noch so witzig aus;)
BlackJack

@erdmulch: Ob das mit POST oder GET gemacht wird ist egal, hauptsache ist das man den Browser dabei nicht veranlasst die Seite neu zu laden oder gar ein neues Fenster zu öffnen. Falls Du eine JavaScript-Bibliothek verwendest die Unterstützung für AJAX-Anfragen hat, dann musst Du in der Dokumentation nachschauen wie das geht. Ansonsten musst Du im Netz suchen wie AJAX funktioniert, oder besser eine JavaScript-Bibliothek verwenden die das vereinfacht.
erdmulch
User
Beiträge: 230
Registriert: Samstag 17. Juli 2010, 19:50

es muss doch möglich sein mithilfe von Javascript eine Python Funktion ohne Ajax aufzurufen!
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@erdmulch: ich glaube Du hast eine falsche Vorstellung davon, was ein HTTP-Server und ein Browser ist.
Ein Server beantwortet Anfragen, die in Form von URLs an ihn gestellt werden.
Ein Browser stellt diese Anfragen und zwar immer dann wenn:
1. er eine Seite, ein Bild, cascadierte Stile oder Scripte laden soll. Jede dieser Anfragen löst bei Browser eine bestimmte Aktion aus. Für reinen Datenaustausch hat sich in den letzten Jahren Ajax als Method etabliert.
Wenn Du also nur eine Anfrage ohne weitere Aktion im Browser auslösen willst, kommst Du um Ajax (oder etwas das auf komplizierte Art und Weise Ajax simuliert) nicht herum.
Antworten