Salut tout le monde :
j'ai cree un project django intitule "website",dans lequel il y a une application "music" .j'ai un album avec plusieur music , le but est quand je clique sur une music suivi du boutton favorite , un coeur doit apparaitre a cote de cette derniere . j'ai constate que mon code ne change pas la valeur de false en true , meme si , je suis sure que la logique est correcte . le model dans l'application music est le suivant :
le file views.py dans l'application music est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 from django.db import models #Red pk 1 class Album(models.Model): artist = models.CharField(max_length=250) album_title=models.CharField(max_length=250) genre=models.CharField(max_length=100) album_logo=models.CharField(max_length=1000) # ... def __str__(self): return self.album_title+'-'+self.artist class Song(models.Model): album =models.ForeignKey(Album,on_delete=models.CASCADE) file_type=models.CharField(max_length=10) song_title=models.CharField(max_length=100) is_favorite = models.BooleanField(default=False) def __str__(self): return self.song_title
et puis le file detail.html qui fait voirr le resultat est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 from django.shortcuts import get_object_or_404, render from django.http import HttpResponse from django.template import loader from music.models import Album #html='' #for album in all_albums: # url='/music/'+str(album.id)+'/' # html+='<a href="'+url+'">'+album.album_title+'</a><br>' def index(request): all_albums=Album.objects.all() # template = loader.get_template('music/index.html') context={'all_albums':all_albums} #return HttpResponse(template.render(context,request)) return render(request,'music/index.html',context) def detail(request,album_id): #try: #album = Album.objects.get(pk=album_id) #context={'album':album} #except Album.DoesNotExist as err: #raise Http404("Album does not exist") album = get_object_or_404(Album, pk=album_id) context={'album':album} return render(request, 'music/detail.html', context) def favorite(request,album_id): album = get_object_or_404(Album, pk=4354) try: selected_song=album.song_set.get(pk=request.POST['song']) print (selected_song) except(KeyError,song.DoesNotExist): return render(request, 'music/detail.html', {'album':album, 'error_message':"You did not select a valid song",}) selected_song.is_favorite = True selected_song.save() context={'album':album} return render(request, 'music/detail.html', context)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 <!doctype html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Titre de la page</title> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous"> <script src="script.js"></script> </head> <body> <img src="{{album.album_logo}}"> <h1>{{album.album_title}}</h1> <h2>{{artist}}</h2> {% if error_message %} <p><strong>{{ error_message }}</strong></p> {% endif %} <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}}-{{song.file_type}} <span>{{song.is_favorite}}</span> {% if song.is_favorite %} <i class="fas fa-heart"></i> {% endif %} </label><br> {% endfor %} <input type="submit" value="favorite"> </form> </body> </html>
Partager