Ich habe eine Ansicht, die /accounts/login/?next=/amos/
umleiten sollte, wenn ein Benutzer versucht /amos
zuzugreifen, wenn sie nicht angemeldet sind. Um Test dafür zu tun, ich die folgende Prüfung verwenden :Djangos Test-Client gibt eine nicht ordnungsgemäß codierte URL
Der Fehler tritt bei auf. Insbesondere hebt er diesen Fehler:
AssertionError: Response redirected to '/accounts/login/?next=/amos/', expected '/accounts/login/?next=%2Famos%2F'
Offensichtlich kommt der Fehler von /
nicht gleich %2F
zu sein. Die Umleitungs-URL, die von response
zurückgegeben wird, scheint nur eine unbearbeitete Zeichenfolge zu sein, während die selbstdefinierte Funktion eine ordnungsgemäß URL-codierte Zeichenfolge zurückgibt. Was soll ich in diesem Fall tun? Sollte ich es einfach nicht URL-encodieren oder ist das ein Problem mit ?
EDIT: Ich habe eine zuvor angehoben bug über auf der DjangoProject-Website gelesen. Nach dem, was ich verstanden habe, scheint dies das beabsichtigte Verhalten zu sein? Das heißt, innerhalb der internen Systeme von Django werden URLs nicht codiert. Wäre ein wenig Einblick von erfahreneren Menschen, danke!
Ooh, schöner Fang! Danke, dass du das für mich erledigt hast! Ich denke, ich werde das Verhalten in meiner 'url_with_querystring()' -Funktion nachahmen (um es zukunftssicher zu machen) –
Um es einfach zu wiederholen, die EDIT: 'redirect_to_login' Methode URL korrekt codiert alles * außer * für Schrägstriche (I teste es mit '!'). Weißt du warum das so ist, @Alasdair? –
Es ist nicht der Client, der die URL codiert - es ist die 'redirect_to_login' Methode, die von dem Decorator aufgerufen wird, den Sie in Ihrer Ansicht verwenden. – Alasdair