подробный вид функции в django - PullRequest
0 голосов
/ 12 апреля 2020

В течение почти 5 часов я не могу сделать детальный просмотр.

Имя моего приложения - фильмы

Мои просмотры: "

def actor_view(request):
    actor_list = Actor.objects.all()
    context = {'actor_list': actor_list}
    return render(request,'movies/actor.html',context)

def actor_detail_view(request,id):
    actorrr=get_object_or_404(Actor,id=id)
    context={
        'actorrr':actorrr,
    }
    return render(request,"movies/actor_detail_view.html",context)

Моя модель

class Actor(models.Model):
    name = models.CharField(max_length=50)
    date_of_birth  = models.DateField()
    age=models.IntegerField( null=True)
    net_worth = models.TextField(max_length=140, null=True)
    picture=models.URLField(default = '')
    children =models.TextField(max_length=140, null=True)
    marital_status=models.TextField(max_length=140, null=True)

Мой актер html:

{% load static %}
{% block mainbody %}
{% for actor in actor_list  %}
<!DOCTYPE html>
<html>
  <head>
  <title>List of actors we have</title>
  <link rel="stylesheet" href="{% static 'css/style_actor.css' %}">
  </head>
  <body>
    <div class="card" >
        <div class="card-image">
          <img src="{{ actor.picture }}" alt="No poster in datebase"    width="289" height="345">
        </div>
    <div class="card-text">
      <h2>
        <a href="/movies/actor_detail/{{actor.id }}">{{ actor.name }}</a>  
      </h2>
      <p>{{movie.pilot}}</p>
    </div>
     <div class="card-imdb-score">
        <p 
         >Age: {{ actor.age }} 
        </p>
     </div>
    </div>

  </body>

</html>

{% endfor %}
{% endblock %}

Мой актер_деталь html

<h6>TEST</h6>

URL фильмов:

path('actor_detail_view/<int:id>',views.actor_detail_view,name='actor_detail_view'),

и основной URL :

path('<int:id>/',views.actor_detail_view,name="actor_detail_view")        

Так что я понятия не имею, как создавать URL-адреса и что размещать в актере. html в href url. Я сделал много уроков и до сих пор не могу этого сделать.

Ответы [ 3 ]

0 голосов
/ 12 апреля 2020

Ваша ссылка на страницу сведений об актере должна быть такой:

<a href={% url 'actor_detail_view' actor.id %}

, также лучше использовать django generi c ракурсы для получения подробных моделей.

0 голосов
/ 14 апреля 2020

Я рекомендую вам использовать CBV, в данном случае DetailView, у меня был тот же проект, и я поместил здесь код для использования:

class DetailedActor(DetailView):
template_name = 'your_template'
model = models.YourModel

def get_context_data(self, *, object_list=None, **kwargs):
    context = super().get_context_data(**kwargs)
    return context

, тогда в вашем шаблоне у вас есть экземпляр вашей модели с конкретик c актер! просто не забудьте передать идентификатор при рендеринге на URL, назначенный этому представлению

0 голосов
/ 12 апреля 2020

Прежде всего, я рекомендую вам правильно задать имя переменной actorrr . Если вы используете Pycharm IDEA, эта идея поможет вам избежать проблем с именами переменных или пробелов, следуя PEP08 .

Некоторые советы:

  1. проверки ваш файл urls.py, чтобы увидеть, существует ли он "/movies/actor_detail/-199уха карманный.}}
  2. Возможно, вам нужно добавить django структуру шаблона, чтобы отобразить данные об актере HTML , без зацикливания, потому что это только один данные.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...