python - Python/Django - 模板中的获取请求中没有出现数据
问题描述
我是 python 新手,正在尝试从导入的新闻 api 中提取数据,但是,即使我没有收到任何可见的错误,它似乎也没有出现在模板中。我正在尝试使用 MVC 框架来组织我的代码
从...开始views.py
从未来导入 unicode_literals
import json
import logging
import requests
from django.http import HttpResponse
from django.template import loader
from django.shortcuts import redirect, render
from django.urls import reverse_lazy
from django.views import generic
from newsapi import NewsApiClient
from .forms import UserProfileCreationForm
from .models import Animals
def news_list(request):
newsapi = NewsApiClient(api_key='123')
all_articles = newsapi.get_everything(
q='animals',
sources='bbc-news,national-geographic, new-scientist, reddit-r-all',
from_param='2018-09-29',
to='2018-09-22',
language='en',
sort_by='relevancy')['articles']
context = {'articles': all_articles,
'type': str(type(all_articles)),
'name': 'Someone'}
template = loader.get_template('home.html')
return HttpResponse(template.render(context, request))
然后urls.py
from django.conf.urls import url, include
from . import views
urlpatterns = [
url(r'^$', views.news_list, name="news_list"),
]
这里也urls.py
来自项目文件夹,不确定是否有帮助
from django.conf.urls import url, include
from django.contrib import admin
from django.views.generic.base import TemplateView
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', TemplateView.as_view(template_name='home.html'), name='home'),
url(r'^users/', include('dangerzone.urls')),
url(r'^users/', include('django.contrib.auth.urls'))
]
最后是模板
base.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>
{% block title %}
Python App
{% endblock title %}
</title>
</head>
<body>
<main>
{% block content %}
{% endblock content %}
</main>
</body>
</html>
home.html
{% extends 'base.html' %}
{% block content %}
<h2>Latest News</h2>
<ul>
{% for article in articles %}
<li>{{ article.source }}</li>
<li>{{ article.author }}</li>
<li>{{ article.title }}</li>
{% endfor %}
</ul>
{% endblock content %}
如果需要更多信息,请告诉我。
到目前为止,我已经尝试过:
- 将url地址从更改
r'^$'
为just''
在没有 HttpResponse 的情况下导入,如下所示:
def news_list(request): newsapi = NewsApiClient(api_key='123') all_articles = newsapi.get_everything( q='animals', sources='bbc-news,national-geographic, new-scientist, reddit-r-all', from_param='2018-09-29',to='2018-09-22', language='en', sort_by='relevancy', page=2)['articles'] return render(request, 'home.html', {'articles' : all_articles})
解决方案
你能告诉我们你的 Python/Django 版本吗?
另外,如果我没记错的话,你的
template = loader.get_template('home.html')
return HttpResponse(template.render(context, request))
不在你的news_list()
职能范围内。
推荐阅读
- java - 安装程序上的 Izpack 错误:无法加载 COIOSHelper.dll
- java - Gradle多项目配置:找不到或加载主类
- ssas - 月份和年份的百分比差异以及使用 DAX 在表中的计数
- spring-tool-suite - 无法在 STS 4 中获取 gradle IncrementalProcessingEnvironment 的委托
- ios - Core Data:当其他属性改变时,Binary Data 属性变为 nil
- assembly - 从 C++ 翻译的 MIPS 没有输出
- r - 在 For 循环 R 中将新列绑定到 DF
- php - php cURL 循环下载一次,然后停止
- c++ - 高级静态多态性
- google-apps-script - 在 Google 表单上执行计算