Python Django教程之实现新闻应用程序
本文详细介绍如何使用Python Django框架结合NewsAPI构建一个新闻聚合Web应用。内容涵盖项目初始化、API密钥配置、视图逻辑编写、HTML模板渲染以及URL路由映射,帮助开发者快速掌握Django后端与前端数据交互的核心流程。
Django新闻应用概述
Django是一个基于Python的高级Web框架,旨在简化服务器端Web应用程序的开发。本文将指导读者如何利用Django创建一个功能完整的新闻应用程序。
环境准备与API集成
我们将集成News API以获取最新的头条新闻。请在命令提示符或终端中按照以下步骤进行操作:

项目目录结构配置
使用文本编辑器打开新闻项目文件夹,确保目录结构符合规范,具体结构如下图所示:

模板路径设置
在新闻应用目录下创建一个名为“templates”的文件夹,并在settings.py文件中配置模板路径。
在settings.py文件中添加模板目录配置,确保Django能正确找到HTML文件。

在views.py文件中定义视图函数。首先导入NewsApiClient,然后创建一个名为index的视图,该视图接收HTTP请求并返回渲染后的HTML响应。具体实现如下:
视图逻辑实现
# 导入 api
from django.shortcuts import render
from newsapi import NewsApiClient
# 在此处创建视图。
def index(request):
newsapi = NewsApiClient(api_key ='YOURAPIKEY')
top = newsapi.get_top_headlines(sources ='techcrunch')
l = top['articles']
desc =[]
news =[]
img =[]
for i in range(len(l)):
f = l[i]
news.append(f['title'])
desc.append(f['description'])
img.append(f['urlToImage'])
mylist = zip(news, desc, img)
return render(request, 'index.html', context ={"mylist":mylist})
在templates文件夹中创建index.html文件,用于展示新闻内容。
前端模板开发
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="external nofollow" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<!-- Optional theme -->
</head>
<body>
<div class="jumbotron" style="color:black">
<h1 style ="color:white">
在我们的网站上获取最新消息
</h1>
</div>
<div class="container">
{% for new, des, i in mylist %}
<img src="{{ i }}" alt="">
<h1>news:</h1> {{ new }}
{{ value|linebreaks }}
<h4>description:</h4>{{ des }}
{{ value|linebreaks }}
{% endfor %}
</div>
</body>
</html>最后,将视图函数映射到urls.py中,以配置URL路由规则。
URL路由映射
from django.contrib import admin
from django.urls import path
from newsapp import views
urlpatterns = [
path('', views.index, name ='index'),
path('admin/', admin.site.urls),
]至此,关于使用Python Django实现新闻应用程序的教程已完成。如需了解更多Python Django新闻应用相关内容,请查阅本站往期文章或继续浏览后续教程,感谢支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









