使用FBV可以很容易地从URL中获取信息,但是我不知道如何使用CBV进行相同的操作。
使用FBV:
1)urls.py:
urlpatterns = [path('test/<int:test_number>/', views.testing, name='testing'),]
2)views.py:
def testing(request, test_number):
context = {'test_number': test_number}
return render(request, 'testing.html', context)
3)模板:“ testing.html”
...
<p>Test #{{ test_number }}</p>
...
,用url写的测试编号显示在html页面上。
问题是,我该如何使用CBV(尤其是DetailView)做同样的事情?
答案 0 :(得分:2)
创建DetailView
的子类并覆盖get_context_data()
方法
from django.views.generic import DetailView
class MyDetailView(DetailView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['test_number'] = self.kwargs['test_number']
return context
,并借助as_view()
urlpatterns = [path('test/<int:test_number>/', views.MyDetailView.as_view(), name='testing'), ]