我正在尝试使用此链接<a href="Annotation/{{ vod.id }}">
在我的网站中根据视频的主键加载另一个页面。我的网址文件如下:
urlpatterns = [
url(r'^$', ListView.as_view(queryset=Vod.objects.all().order_by("-date")[:25], template_name="Annotation/home.html")),
url(r'^(?P<pk>\d+)$', ListView.as_view(queryset=Vod.objects.get(pk=1).posts.all().order_by("-date"), template_name="Annotation/post.html")),
]
我从使用上述链接生成的链接中获取标准404。
谢谢!
编辑:添加了基本网址
url(r'^admin/', admin.site.urls),
url(r'^Annotation', include('Annotation.urls')),
url(r'^Profile', include('Profile.urls')),
这是Profile.urls的网址
url(r'^$', views.index, name='index'),
edit2:更改了网址并添加了我正在尝试使用的视图。
url(r'^(?P<key>[0-9]+)$', views.post, name="post")
这是views.post
def post(request, key):
try:
target_vod = Vod.objects.get(pk=key)
except Target.DoesNotExist:
raise Http404("Vod does not exist")
target_posts = Vod.objects.get(pk=key).posts.all().order_by("-date")
context = {'target_vod': target_vod, 'target_posts': target_posts}
return render(request, 'Annotation/post.html', context)
答案 0 :(得分:0)
我已将代码分开并将其放入views.py中。这应该有用。
urls.py
url(r'^(?P<pk>[0-9]+)$', AnnoList.as_view(), template_name="Annotation/post.html")),
然后在views.py中:
class AnnoList(ListView):
template_name = 'Annotation/post.html'
def get_queryset(self):
self.vod = get_object_or_404(Vod, pk=self.args[0])
return Posts.objects.filter(vod=self.vod).all().order_by("-date")
我在这里假设您有两个不同的表,而且Posts有一个Vod的外键。