Djangoのテンプレートで{% for ... %}
を使って繰り返しをしようとして調べつつ色々やっていますが上手く表示されずエラーとなってしまい困っています。
やりたいことは、ツイッターのタイムラインをからツイートを5つ取得して、それをテンプレートフォルダの中のindex.htmlに表示させることです。
コードは以下です↓
views.py
views.py
1import time 2import calendar 3import datetime 4import json 5import sys 6import codecs 7from django.shortcuts import render 8 9# Create your views here. 10from requests_oauthlib import OAuth1Session 11 12sys.stdout = codecs.getwriter('utf-8')(sys.stdout) 13 14from django.http.response import HttpResponse 15 16 17# def index(request): 18# msg = request.GET.get('words') 19 20C_KEY = '' 21C_SECRET = '' 22A_KEY = '' 23A_SECRET = '' 24 25url = 'https://api.twitter.com/1.1/statuses/update.json' 26# params = {'status': 'lang': 'ja'} 27tw = OAuth1Session(C_KEY, C_SECRET, A_KEY, A_SECRET) 28req = tw.post5(url, params=params) 29 30url = 'https://api.twitter.com/1.1/statuses/home_timeline.json' 31params = {'count': 5} 32req = tw.get(url, params=params) 33 34if req.status_code == 200: 35 timeline = json.loads(req.text) 36 print(timeline) 37 limit = req.headers['x-rate-limit-remaining'] 38 39 for tweet in timeline: 40 Text = (tweet['text']) 41 User = (tweet['user']['screen_name']) 42 Name = (tweet['user']['name']) 43 Img = (tweet['user']['profile_image_url']) 44 Created_at = YmdHMS(tweet['created_at']) 45 46 data = TwitterModel() 47 data.user_id = User 48 data.user_name = Name 49 data.user_img = Img 50 data.user_text = Text 51 data.user_created_at = Created_at 52 data.save() 53 54 Message = { 55 'Words': msg, 56 'timeline': timeline, 57 'API_limit': limit, 58 'Text': Text, 59 'User': User, 60 'Name': Name, 61 'Img': Img, 62 'Created_at': Created_at, 63 } 64 65 # return render(request, 'index.html', Message) 66 67else: 68 Error = { 69 'Error_message': 'API制限中', 70 } 71 # return render(request, 'index.html', Error) 72 73 74def YmdHMS(created_at): 75 time_utc = time.strptime(created_at, '%a %b %d %H:%M:%S +0000 %Y') 76 unix_time = calendar.timegm(time_utc) 77 time_local = time.localtime(unix_time) 78 return int(time.strftime('%Y%m%d%H%M%S', time_local)) 79
templates/index.html
index.html
1<html> 2<head> 3 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> 4 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css"> 5</head> 6<body> 7{% for Message in timeline %} 8<table border="1"> 9 <tr> 10 <th>API_limit</th> 11 <th>画像</th> 12 <th>ツイート内容</th> 13 <th>名前</th> 14 <th>日時</th> 15 </tr> 16 <tr> 17 <td>{{ API_limit }}</td> 18 <td><img src="{{ Img }}" /></td> 19 <td>{{ Text }}</td> 20 <td>{{ Name }}</td> 21 <td>{{ Created_at }}</td> 22 </tr> 23</table> 24{% endfor %} 25<h2>Error_message</h2> 26<h2>{{ Error_message }}</h2> 27</body> 28</html>
*forのところに:が入っていたので、削除しましたが思い通りに動いてくれません。
環境
Python3.7.6
Django 3.0
Windows10
仮想環境:venv
以上となります。
どうぞよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/05/07 05:44