Ich kann das folgende Problem nicht lösen, auch nicht mit den Antworten auf verwandte Fragen auf dieser Seite.Fehler beim Senden des Formulars in Django. ValueError: ungültiges Literal für int() mit der Basis 10: ''
Im Moment mache ich das Django-Tutorial, bin aber mit dem Formular festgefahren. Der folgende Fehler, dass ich bekommen whem ein Lieblingslied einreichen, wird mich nervt:
ValueError: invalid literal for int() with base 10: ''
ich alles habe ich versucht, von (zB selected_song = album.song_set.get(pk= int(request.POST['song'])
) einfiel und gegoogelt Suche nach einer Antwort, aber ich kann nicht zu beheben scheinen es. Ich schätze jede Hilfe.
detail.html
<form action="{% url 'music:favorite' album.id %}" method = "post">
{% csrf_token %}
{% for song in album.song_set.all %}
<input type = "radio" id = "song{{ forloop.counter }}" name = "song" value = "{{ song_id }}" />
<label for="song{{ forloop.counter }}">
{{ song.song_title }}
{% if song.is_favorite %}
<img src="http://http://i.imgur.com/b9b13Rd.png" />
{% endif %}
</label><br>
{% endfor %}
<input type="submit" value="Favorite">
</form>
views.py
def favorite(request, album_id):
album = get_object_or_404(Album, pk = album_id)
try:
selected_song = album.song_set.get(pk= int(request.POST['song']))
except (KeyError, Song.DoesNotExist):
return render(request, 'music/detail.html', {
'album':album,
'error_message': "You didn't select a valid song"
})
else:
selected_song.is_favorite = True
selected_song.save()
return render(request, 'music/detail.html', {'album': album})
Bitte geben Sie den Trackback Ihrer Ausnahme an. Haben Sie auch versucht zu überprüfen, was der Wert für 'request.POST ['song']' 'ist? –
Ein leerer Wert wird an Ihre Ansicht gesendet, sodass versucht wird, '' auf einen int zu übertragen. – cdvv7788