ich hänge seit einiger Zeit an einem Problem ohne wirklich weiter zu kommen. Ich habe in meinem Heimnetzwerk einen Rechner als Server umfunktioniert. Auf dem Server liegen verschiedene Musikdateien. Dazu habe ich eine Django-Oberfläche gebastelt, um über eine Suchfunktion Lieder auszuwählen und gleich im Browser abzuspielen.
Das ganze läuft mit einem Apache und wsgi. In einer MySQL-Datenbank speichere ich nur die Dateipfade. Über die Suchfunktion werden mir die Dateipfade als Link im Browser ausgegeben. Das funktioniert auch wunderbar, so lange keine Umlaute o.ä. im Link enthalten sind.
Aus der Datenbank wird der Link als unicode geliefert. Ein sys.getfilesystemencoding() liefert mir ein ANSI_X3.4-1968 und sys.getdefaultencoding() liefert ascii.
Aber nur wenn ich im view folgendes encoding setze, bekomme ich keinen Fehler:
Code: Alles auswählen
if request.method == 'POST':
form = SearchForm(request.POST)
s_title = request.POST.get('f_title', '')
s_artist = request.POST.get('f_artist', '')
if s_title and s_artist:
result = LiedDetails.objects.filter(titel__icontains=s_title, kuenstler__icontains=s_artist)
for song in result:
song.dateipfad = song.dateipfad.encode('iso-8859-1')
Jetzt habe ich aber das Problem, dass nicht die richtige Url im Link angezeigt wird.
Hier ein Ausschnitt aus dem Template:
Code: Alles auswählen
{% for song in result %}
<tr font-size="2">
<td> {{ song.titel }} </td>
<td> {{ song.kuenstler }} </td>
<td align="center"> {{ song.laenge }} </td>
<td align="center"> {{ song.bitrate }} </td>
<td align="center"> {{ song.dateidatum }} </td>
<td><a href={{ song.dateipfad|urlencode }}>Download</a></td>
</tr>
Mawilo