【问题标题】:get_object_or_404 Error page not foundget_object_or_404 找不到错误页面
【发布时间】:2016-04-07 23:52:48
【问题描述】:

我正在尝试在电话号码和消息之间建立一对多的关系。每当我选择一个号码来显示发送到该号码的消息时,我都会收到 404 错误。

views.py

def index(request):
    number = phoneNumber.objects.all()
    return render(request, 'index.html', {'number': number})

def detail(request, phonenumber):
    messages = get_list_or_404(Message, to=phonenumber)
    return render(request, 'messages.html', {'messages': messages})

models.py

class phoneNumber(models.Model):
    address = models.CharField(max_length=15)

    def __str__(self):
        return self.address

class Message(models.Model):
    to = models.ForeignKey(phoneNumber)
    sentfrom = models.CharField(max_length=15)
    content = models.TextField()

    def __str__(self):
        return '%s' % (self.content)

urls.py

urlpatterns = [
        url(r'^$', views.index, name='index'),
        url(r'(?P<phonenumber>[0-9]+)', views.detail, name='detail'),
 ]

index.html

{% for num in number %}
    <ul>
        <li><a href="{% url 'detail' phonenumber=num.address %}">{{ num.address }}</a></li>
    </ul>
{% endfor %}

messages.html

{% for message in messages %}
    <p>{{ message }}</p>
{% endfor %}  

【问题讨论】:

  • 请分享你的 urls.py

标签: python django python-2.7 django-models


【解决方案1】:

您需要先捕获电话号码对象,然后才能对其进行过滤。

def detail(request, phonenumber):
    phonenumber_obj = get_object_or_404(phoneNumber, address=phonenumber)
    messages = get_list_or_404(Message, to=phonenumber_obj)
    return render(request, 'messages.html', {'messages': messages})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-29
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    相关资源
    最近更新 更多