找不到页面(404)Django上的错误:

时间:2018-04-03 03:11:13

标签: django django-models django-forms django-templates django-views

我们正在寻找的输出是在页面上获得标题 http://127.0.0.1:8000/courses/1/1/ 以及其他页面/ 2 /或/ 3 /

课程/ views.py

from django.shortcuts import get_object_or_404, render

from .models import Course, Step

def course_list(request):
    courses = Course.objects.all()
    return render(request, 'courses/course_list.html',
                  {'courses': courses})

def course_detail(request, pk):
    course = get_object_or_404(Course, pk=pk)
    return render(request, 'courses/course_detail.html',
                  {'course': course})

def step_detail(request, course_pk, step_pk):
    step = get_object_or_404(Step, course_id=course_pk, pk=step_pk)
    return render(request, 'courses/step_detail.html',
                  {'step': step})

我们的重点将是:

def step_detail(request, course_pk, step_pk):

    step = get_object_or_404(Step, course_id=course_pk, pk=step_pk)

    return render(request, 'courses/step_detail.html', {'step': step})

step_detail.html

{% extends "layout.html" %}

{% block title %} {{ step.title }} - {{ step.course.title }}{% endblock %}
     {% block content %}
     <article>
     <h2> {{step.course.title }} </h2>
         <h3> {{step.title }} </h3>
         {{ step.content|linebreaks }}
     </article>
     {% endblock %}

当然/ url.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.course_list),
    url(r'(?P<course_pk>\d+)/(?P<step_pk>\d+)/$', views.step_detail),
    url(r'(?P<pk>\d+)/$', views.course_detail),
]

1 个答案:

答案 0 :(得分:3)

实际上,你从这里得到404 error

 step = get_object_or_404(Step, course_id=course_pk, pk=step_pk)

此处(get_object_or_404)您说如果无法找到给定course_idstep_pk步骤,则会出现404错误,它也在做同样的事情。

您需要确保条目存在。 你的代码似乎很好。