我们正在寻找的输出是在页面上获得标题 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),
]
答案 0 :(得分:3)
实际上,你从这里得到404 error
。
step = get_object_or_404(Step, course_id=course_pk, pk=step_pk)
此处(get_object_or_404
)您说如果无法找到给定course_id
和step_pk
的步骤,则会出现404
错误,它也在做同样的事情。
您需要确保条目存在。 你的代码似乎很好。