Python 如何在同一模板中传递另一个模型的listview和另一个模型的detailview
我想使用基于类的视图在同一模板中传递post模型的listview和movies模型的detailview views.py 要从URL中传递的电影的pk打印模型电影的详细视图吗 我通过url传递了电影名称和pk,但无法获得其他细节,如我们从pk获得的detailview url.py post_list.html 这里我想介绍一下电影的细节和帖子的细节Python 如何在同一模板中传递另一个模型的listview和另一个模型的detailview,python,django,django-forms,django-views,django-templates,Python,Django,Django Forms,Django Views,Django Templates,我想使用基于类的视图在同一模板中传递post模型的listview和movies模型的detailview views.py 要从URL中传递的电影的pk打印模型电影的详细视图吗 我通过url传递了电影名称和pk,但无法获得其他细节,如我们从pk获得的detailview url.py post_list.html 这里我想介绍一下电影的细节和帖子的细节 <!DOCTYPE html> <html lang="en"> <head>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="keywords" content="footer, address, phone, icons" />
<meta name='viewport' content='width=device-width, initial-scale=1'>
<script src='https://kit.fontawesome.com/a076d05399.js'></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css">
<link href="http://fonts.googleapis.com/css?family=Cookie" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="style.css">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<header class="site-header">
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand mr-4" href="{% url 'blog-home' %}"><p style="font: normal 36px 'Cookie', cursive;margin:0px;">Axon <span style="color:#5383d3;">Blog</span></p></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarToggle">
<div class="navbar-nav mr-auto">
<a class="nav-item nav-link" href="{% url 'blog-home' %}"><i class="fa fa-fw fa-home" style="font-size:18px;"></i> Home</a>
<a class="nav-item nav-link" href="{% url 'blog-about' %}"><img src="https://img.icons8.com/ios/20/000000/about.png"/> About</a>
</div>
<!-- Navbar Right Side -->
<div class="navbar-nav">
{% if user.is_authenticated %}
<a class="nav-item nav-link" href="{% url 'profile' %}"><i class="fas fa-user-alt" style="font-size:18px;"></i> {{ user.username }}</a>
<a class="nav-item nav-link" href="{% url 'logout' %}"><i class="fa fa-fw fa-sign-out" style="font-size:16px;"></i> Logout</a>
{% else %}
<a class="nav-item nav-link" href="{% url 'login' %}"><i class="fas fa-sign-in-alt" ></i> Login</a>
<a class="nav-item nav-link" href="{% url 'register' %}"><i class="fas fa-user-plus" style="font-size:14px;"></i> Register</a>
{% endif %}
</div>
</div>
</div>
</nav>
</header>
</body>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<h1 class="mb-3">Reviews of {{ view.kwargs.name }} ({{ page_obj.paginator.count }})</h1>
<a href="{% url 'post-create' view.kwargs.name view.kwargs.pk %} "><button class="btn"><i class="fa fa-plus"></i> Add Review</button></a>
<br><br>
{{ object.post_set.all }}
{% for post in posts %}
<article class="media content-section">
<img class="rounded-circle article-img" src="{{ post.author.profile.image.url }}">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2" href="{% url 'user-post' post.author.username %}">{{ post.author }}</a>
<small class="text-muted">{{ post.date_posted|date:"F d, Y " }}</small>
</div>
<h3><a class="article-title">{{ post.name }}</a></h3>
<h2><a class="article-title" href="{% url 'post-detail' post.id %}">{{ post.title }}</a></h2>
<p class="article-content">{{ post.content }}</p>
</div>
</article>
{% endfor %}
{% if is_paginated %}
{% if page_obj.has_previous %}
<a class ="btn btn-outline-info mb-4" href="?page=1">First</a>
<a class ="btn btn-outline-info mb-4" href="?page={{ page_obj.previous_page_number }}">Previous</a>
{% endif %}
{% for num in page_obj.paginator.page_range %}
{% if page_obj.number == num %}
<a class ="btn btn-info mb-4" href="?page={{ num }}">{{ num }}</a>
{% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
<a class ="btn btn-outline-info mb-4" href="?page={{ num }}">{{ num }}</a>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<a class ="btn btn-outline-info mb-4" href="?page={{ page_obj.next_page_number }}">Next</a>
<a class ="btn btn-outline-info mb-4" href="?page={{ page_obj.paginator.num_pages }}">Last</a>
{% endif %}
{% endif %}
</style>
</html>
{%if user.u经过身份验证%}
{%else%}
{%endif%}
对{{view.kwargs.name}{{{page_obj.paginator.count}}的审查
{{object.post_set.all}
{posts%%中的post为%s}
{{发布日期{发布日期:“F d,Y”}
{{post.content}
{%endfor%}
{%if已分页%}
{%如果页面_obj.has_previous%}
{%endif%}
{page_obj.paginator.page_range%}
{%if page_obj.number==num%}
{%elif num>page_obj.number | add:'-3'和num
在上下文中添加模型详细信息,以便在模板中提供它们,如:
...
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
movie = get_object_or_404(Movies, pk=self.kwargs.get('pk'))
context["movie"] = movie
URL.py是什么样子的?它在MoviesDetailListView中传递带有名称和pk的URL从模板中如何访问电影详细信息和发布模型列表现在它没有显示任何内容您的模型是如何定义的?很抱歉,我是新来的,您能找出模板的问题吗?您可以访问所有使用:
object.post\u set.all发布,以及如何访问电影的详细信息
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
from PIL import Image
class Movies(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
producer = models.CharField(max_length=100)
director = models.CharField(max_length=100)
date_released = models.DateTimeField(default=timezone.now)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
class Meta:
verbose_name_plural = "Movies"
def __str__(self):
return self.name
def get_id():
return
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
name = models.ForeignKey(Movies, on_delete=models.CASCADE,default=1)
def __str__(self):
return self.title
# return reverse('post-detail' , kwargs={'pk':self.pk})
def get_absolute_url(self):
return reverse('blog-home')
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="keywords" content="footer, address, phone, icons" />
<meta name='viewport' content='width=device-width, initial-scale=1'>
<script src='https://kit.fontawesome.com/a076d05399.js'></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css">
<link href="http://fonts.googleapis.com/css?family=Cookie" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="style.css">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<header class="site-header">
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand mr-4" href="{% url 'blog-home' %}"><p style="font: normal 36px 'Cookie', cursive;margin:0px;">Axon <span style="color:#5383d3;">Blog</span></p></a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarToggle">
<div class="navbar-nav mr-auto">
<a class="nav-item nav-link" href="{% url 'blog-home' %}"><i class="fa fa-fw fa-home" style="font-size:18px;"></i> Home</a>
<a class="nav-item nav-link" href="{% url 'blog-about' %}"><img src="https://img.icons8.com/ios/20/000000/about.png"/> About</a>
</div>
<!-- Navbar Right Side -->
<div class="navbar-nav">
{% if user.is_authenticated %}
<a class="nav-item nav-link" href="{% url 'profile' %}"><i class="fas fa-user-alt" style="font-size:18px;"></i> {{ user.username }}</a>
<a class="nav-item nav-link" href="{% url 'logout' %}"><i class="fa fa-fw fa-sign-out" style="font-size:16px;"></i> Logout</a>
{% else %}
<a class="nav-item nav-link" href="{% url 'login' %}"><i class="fas fa-sign-in-alt" ></i> Login</a>
<a class="nav-item nav-link" href="{% url 'register' %}"><i class="fas fa-user-plus" style="font-size:14px;"></i> Register</a>
{% endif %}
</div>
</div>
</div>
</nav>
</header>
</body>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<h1 class="mb-3">Reviews of {{ view.kwargs.name }} ({{ page_obj.paginator.count }})</h1>
<a href="{% url 'post-create' view.kwargs.name view.kwargs.pk %} "><button class="btn"><i class="fa fa-plus"></i> Add Review</button></a>
<br><br>
{{ object.post_set.all }}
{% for post in posts %}
<article class="media content-section">
<img class="rounded-circle article-img" src="{{ post.author.profile.image.url }}">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2" href="{% url 'user-post' post.author.username %}">{{ post.author }}</a>
<small class="text-muted">{{ post.date_posted|date:"F d, Y " }}</small>
</div>
<h3><a class="article-title">{{ post.name }}</a></h3>
<h2><a class="article-title" href="{% url 'post-detail' post.id %}">{{ post.title }}</a></h2>
<p class="article-content">{{ post.content }}</p>
</div>
</article>
{% endfor %}
{% if is_paginated %}
{% if page_obj.has_previous %}
<a class ="btn btn-outline-info mb-4" href="?page=1">First</a>
<a class ="btn btn-outline-info mb-4" href="?page={{ page_obj.previous_page_number }}">Previous</a>
{% endif %}
{% for num in page_obj.paginator.page_range %}
{% if page_obj.number == num %}
<a class ="btn btn-info mb-4" href="?page={{ num }}">{{ num }}</a>
{% elif num > page_obj.number|add:'-3' and num < page_obj.number|add:'3' %}
<a class ="btn btn-outline-info mb-4" href="?page={{ num }}">{{ num }}</a>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<a class ="btn btn-outline-info mb-4" href="?page={{ page_obj.next_page_number }}">Next</a>
<a class ="btn btn-outline-info mb-4" href="?page={{ page_obj.paginator.num_pages }}">Last</a>
{% endif %}
{% endif %}
</style>
</html>
...
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
movie = get_object_or_404(Movies, pk=self.kwargs.get('pk'))
context["movie"] = movie