Django中的功能详细信息视图

时间:2020-04-12 00:23:37

标签: python django

近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 %}

我的actor_detail html

<h6>TEST</h6>

电影网址:

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

和主网址:

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

所以我不知道如何制作网址以及在href网址中的actor.html中放置什么内容。我编写了许多教程,但仍然无法做到。

3 个答案:

答案 0 :(得分:0)

首先,我建议您正确设置变量 actorrr 的名称。 如果您使用的是Pycharm IDEA,则该想法可帮助您避免在PEP08之后出现变量或空格名称的问题。

一些提示:

  1. 验证您的urls.py文件,以查看是否存在“ /movies/actor_detail/{{actor.id}}
  2. 可能您必须添加django模板结构以显示actor详细信息HTML的数据,而无需进行循环,因为它只是一个数据。

答案 1 :(得分:0)

您到演员详细信息页面的链接必须像这样:

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

最好还是使用django通用视图来获取详细的模型。

答案 2 :(得分:0)

我建议您使用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

然后在模板中,您有一个模型实例,其中有一个特定的参与者!只是不要忘记在渲染到分配给该视图的URL时传递id