Проблема с вызовом товаров из базы django - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь создать веб-сайт потоковой передачи музыки c. Я создал базовый шаблон и расширил его до двух других шаблонов. Один из них - song_list. html и musicplayer. html. Я закодировал просмотры и URL-адреса, чтобы получить абсолютный URL-адрес. my song_list. html:

{% extends "home.html" %}
{% block content %}
<div class="container">


{% for post in posts %}
<a href="{{ post.get_absolute_url }}">{{post.song_title}} by {{post.artist}} from {{post.album}}</a><br>
{% endfor %}
</div>
<div class="container">


  {% include "pagination.html" with page=page_obj %}


  </div>
{% endblock %}

Я хочу отобразить песни из базы данных на странице музыкального проигрывателя после щелчка по тегу привязки. my msicplayer. html:

{% extends "home.html" %}
{% load i18n %}
{% block content %}

<div class="container">


<form class="" action="mediaplayer.html" method="get">


            <div class="data-content">
              <div class="container">


  


                <div id="img-1" class="tabcontent">
                    <div class="blog-content">

                      <div class="row">
                        <div class="col-sm">


                        <div class="card" style="width: 18rem;">
                        <div class="img">
                            <img  class="img-thumbnail" src="{{ post.img.url }}" alt="">
                        </div>

                        <div class="card-body">
                            <div class="title">
                            <p>{% trans 'Artist:' %} {{post.artist}} </p><br>
                            <p>{% trans 'Title:' %} {{post.song_title}}</p><br>
                            <p>{% trans 'Album:' %} {{post.album}}</p><br>
                            <p>{% trans 'Duration' %} {{post.song_duration}}</p><br>
                       </div>

                            <audio controls>

                              <source src='{{ post.song.url }}' type="audio/mpeg">
                              Your browser does not support the audio element.
                            </audio>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>

</div>



{% endblock %}

Просмотры моего приложения:

from django.shortcuts import render,get_object_or_404
from .models import song_thumb
from django.core.paginator import Paginator, EmptyPage,PageNotAnInteger
from django.views.generic import ListView
# Create your views here.

class SongListView(ListView):
    model=song_thumb
    context_object_name='posts'
    paginate_by=20
    template_name='songlist.html'

def song_detail(request, year, month, day, post):
    post=song_thumb.objects.all()
    return render(request,'musicplayer.html',{'post': post})

мои модели приложений:

from django.db import models
from django.utils import timezone
from django.urls import reverse

# Create your models here.
class song_thumb(models.Model):
    artist=models.CharField(max_length=100,null=True)
    uploaded_by=models.CharField(max_length=100,null=True)
    song_title=models.CharField(max_length=100,null=True)
    slug=models.SlugField(max_length=250,null=True)
    album=models.CharField(max_length=100,null=True)
    song_duration=models.FloatField(null=True)
    img=models.ImageField(upload_to='pics',null=True)
    song=models.FileField(upload_to='media',null=True)
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)

    def get_absolute_url(self):
        return reverse('song_detail',args=[self.publish.year,
                             self.publish.month,
                             self.publish.day, self.slug])




    class Meta:
        ordering = ('-publish',)
    def __str__(self):
        return self.song_title

URL-адреса моих приложений:

urlpatterns = [

    path('',views.SongListView.as_view(),name='songs'),
    path('<int:year>/<int:month>/<int:day>/<slug:post>/',views.song_detail,
         name='song_detail'),

Как я уже сказал, я хочу, чтобы новая страница с подробностями песен и медиаплеером отображалась после того, как я щелкнул тег привязки в списке песен. html. Но когда я щелкаю по ней, я получаю пустую страницу.

1 Ответ

0 голосов
/ 21 июня 2020

здесь, вам нужно получить сообщение в соответствии с идентификатором, но вы все здесь подробно отображаете. Таким образом, вы можете сделать это

view.py

from django.shortcuts import get_object_or_404

def song_detail(request, post_id):
   post=get_object_or_404(Course, pk=post_id)

return render(request,'musicplayer.html',{'post': post})

urls.py

 path('<int:post_id>/',views.song_detail,
     name='song_detail'),

в теге acnhor вы можете указать ссылку на конкретный пост

 <a href="{% url 'song_detail' post.id %}">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...