Django网页展示电影数据:实现名称点击跳转详情页求助
实现方案
以下是基于Django框架的完整实现步骤,直接按流程操作即可完成需求:
1. 编写视图函数
在你的app目录下的views.py中添加两个视图,分别处理电影列表展示和单部电影详情:
from django.shortcuts import render, get_object_or_404 from .models import Movie # 展示所有电影的列表页视图 def movie_list(request): # 获取数据库中所有电影数据 movies = Movie.objects.all() # 将数据传给模板 return render(request, 'movies/movie_list.html', {'movies': movies}) # 展示单部电影详情的视图 def movie_detail(request, movie_id): # 根据ID获取对应电影,不存在则返回404页面 movie = get_object_or_404(Movie, pk=movie_id) return render(request, 'movies/movie_detail.html', {'movie': movie})
2. 配置URL路由
在app目录下创建urls.py(如果已有则直接修改),添加列表页和详情页的路由规则:
from django.urls import path from . import views urlpatterns = [ # 电影列表页的URL,命名为movie_list方便模板调用 path('movies/', views.movie_list, name='movie_list'), # 电影详情页的URL,通过<int:movie_id>传递电影ID参数,命名为movie_detail path('movies/<int:movie_id>/', views.movie_detail, name='movie_detail'), ]
同时确保项目根目录的urls.py中已经包含了该app的路由引用:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), # 引入你的app的路由 path('', include('your_app_name.urls')), ]
3. 创建列表页模板
在app目录下创建templates/movies/目录,然后新建movie_list.html文件,实现电影名称列表和跳转链接:
<!DOCTYPE html> <html> <head> <title>电影列表</title> </head> <body> <h1>电影列表</h1> <ul> {% for movie in movies %} <!-- 通过url标签生成详情页链接,传递电影ID参数 --> <li><a href="{% url 'movie_detail' movie.id %}">{{ movie.name }}</a></li> {% empty %} <li>暂无电影数据</li> {% endfor %} </ul> </body> </html>
4. 创建详情页模板
在同一个templates/movies/目录下新建movie_detail.html文件,展示电影的全部信息:
<!DOCTYPE html> <html> <head> <title>{{ movie.name }} - 详情</title> </head> <body> <h1>{{ movie.name }}</h1> <p><strong>类型:</strong> {{ movie.genre }}</p> <p><strong>上映日期:</strong> {{ movie.date_of_release }}</p> <p><strong>IMDb评分:</strong> {{ movie.IMDb }}</p> <p><strong>演员:</strong> {{ movie.cast }}</p> <p><strong>简介:</strong> {{ movie.summary }}</p> {% if movie.image %} <!-- 展示电影海报,image字段存储的是图片URL --> <img src="{{ movie.image }}" alt="{{ movie.name }} 海报" style="max-width: 300px;"> {% endif %} <!-- 返回列表页的链接 --> <p><a href="{% url 'movie_list' %}">返回电影列表</a></p> </body> </html>
注意事项
- 确保项目
settings.py的TEMPLATES配置中APP_DIRS = True,这样Django能自动识别app内的templates目录。 - 如果你的
image字段存储的是本地文件路径而非网络URL,需要将文件放在static目录下,并使用{% static %}标签引用。
内容的提问来源于stack exchange,提问作者Dorsa
相关产品推荐
相关产品推荐

