-1

大家好,提前感谢您的帮助,我一般是编程新手。我想在配音演员(在 Film.html 中)中创建一个链接,并使用该 ID 打开一个新页面(Attore.html),其中仅加载与该 ID 关联的数据,但它不会这样做,因为它加载它们,但我不明白错误在哪里。我也不知道为什么不对 Attore.html 中的 CSS 收费,而在 Film.html 中没有问题,而且很奇怪,因为它位于 Base.html 上。

这是稍微简化的代码。

模型.py:

from django.db import models

class Attore( models.Model ):
    nome = models.CharField( max_length=30 )
    cognome = models.CharField( max_length=30 )
    foto = models.CharField( max_length=100 )
    data_inserimento = models.DateField( null=True, verbose_name="data d'inserimento" )
    def __unicode__(self):
        return self.nome + " " + self.cognome + " " + self.foto
    class Meta:
        verbose_name_plural = "Attori"

class Film( models.Model ):
    titolo = models.CharField( max_length=39 )
    trama = models.CharField( max_length=1000 )
    locandina = models.CharField( max_length=100 )
    copertina = models.CharField( max_length=100 )
    data_inserimento = models.DateField( null=True, verbose_name="data d'inserimento" )
    attori = models.ManyToManyField( Attore )
    def __unicode__(self):
        return self.titolo + " " + self.trama + " " + self.locandina + " " + self.copertina
    class Meta:
        verbose_name_plural = "Film"

视图.py:

from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from models import *

def film(request):
    film = Film.objects.order_by("titolo")
    return render_to_response('Film.html', { 'film': film, })

def film_attore(request, id):
    get_attore_id = get_object_or_404( Attore, pk=id )
    return render_to_response('Attore.html', { 'film': Film.objects.filter( attori=get_attore_id ), 'attor': get_attore_id })

网址.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',    
    (r'^Film$', 'Database.views.film'),
    (r'^Attore/(\d+)/$', 'Database.views.film_attore'),
)

模板:

基础.html:

<!DOCTYPE html>
<html>
<head>
  <title>{% block titolo %}Titolo{% endblock %}</title>
  <link href="../static/css/Default.css" media="screen" rel="stylesheet" type="text/css">
</head>
<body>
  {% block contenuto %}Contenuto{% endblock %}
</body>
</html>

电影.html:

{% extends "Base.html" %}

{% block titolo %}Film{% endblock %}

{% block contenuto %}
  {% for dato in film %}
    {% for attore in dato.attori.all %}
      <a href="/Database/Attore/{{ attore.id }}">{{ attore.nome }} {{ attore.cognome }}</a>
    {% endfor %}
  {% endfor %}
{% endblock %}

Attore.html:

{% extends "Base.html" %}

{% block titolo %}Attore{% endblock %}

{% block contenuto %}
  {% for dato in film %}
    {% for attore in dato.attori.all %}
      <h2>{{ attore.nome }} {{ attore.cognome }}</h2>
    {% endfor %}
  {% endfor %}
{% endblock %}
4

1 回答 1

0

第一件事是你应该为你的 css 设置一个绝对路径,而不是相对路径,这就是为什么不加载的原因。

然后,对我来说,代码看起来就像它所告诉的那样。在film_attore视图中,您将电影列表和演员传递给模板,但在模板中您不使用attori变量,而是遍历该演员的所有电影,然后查找并打印每部电影中所有演员的列表。

于 2013-04-21T13:28:27.170 回答