跳到主要内容

[企业官网]:新闻模块实现

现在我们已经添加了不同分类的新闻,接下来需要将它们显示在我们的页面上。在前端页面中,通常会有一个新闻的列表页和一些新闻的详情页。因此,我们需要设置两个URL,一个用于列表页,一个用于新闻详情页。在我们的配置文件中在config文件夹下urls.py文件中,我们直接设置这两个路径。在路径中设计“news/list”来表示列表页还需要一个url来表示news详情页。由于都以“news”开头,所以我们将它们放到了news应用(文件夹)下,在config文件夹下urls.py文件中使用include函数导入相应的URL配置。代码如下:

from django.contrib import admin
from django.urls import path, include
from mysite import views

# 定义URL模式列表
urlpatterns = [
# 首页路径,指向视图函数 index
path('', views.index),
# 新闻相关路径,包含 news 应用的 URL 配置
path('news/', include('news.urls')),
# 管理员路径,指向 Django 自带的管理后台
path('admin/', admin.site.urls),
]

# 添加媒体文件访问的 URL 配置
from django.conf import settings
from django.conf.urls.static import static

# 添加媒体文件的 URL 配置,指向 settings 中设置的 MEDIA_ROOT
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

在news文件夹下,我们新建了一个urls.py文件,配置了与主urls.py中类似的路由模式。我们导入了视图函数并设置了两个路径,一个用于新闻列表页,一个用于新闻详情页。我们创建了两个视图函数,一个用于列表页,一个用于详情页,代码如下:

from django.urls import path
from . import views # 从当前应用中导入 views 模块

# 定义 URL 模式列表
urlpatterns = [
# 列表页路径,指向 views 模块中的 news_list 函数
path('list/', views.news_list),
# 详情页路径,使用了动态参数 <int:id> 来匹配新闻的 ID,指向 views 模块中的 detail 函数
path('<int:id>/', views.detail)
]

接着我们需要在news文件夹下views.py中创建两个函数实现了页面的内容,代码如下:

from django.http import HttpResponse
from django.shortcuts import render

def news_list(request):
# 获取新闻列表视图
# 在这个视图函数中,我们渲染一个名为 'list.html' 的模板
return render(request, 'list.html')

def detail(request, id):
# 新闻详情视图
# 在这个视图函数中,我们将渲染一个名为 'detail.html' 的模板来显示特定新闻的详细信息
return render(request, 'detail.html')

在templates文件夹中,我们创建了list.html和detail.html,用于渲染新闻列表页和新闻详情页的内容。如下图所示:

01新建detailhtml.jpg

在list.html列表页中,我们要显示的全部的文章。我们需要在news文件夹下views.py中添加传递全部文章列表的代码并渲染到页面上, 修改代码如下:

🔒 试读结束

继续阅读完整内容

以上为免费预览。前往「Django + Vue 全栈课程」,查看后续完整讲解、案例演示和配套资料。

查看课程详情