Ich habe eine Funktion zum Speichern von Tweet-Daten auf dem Client hinzugefügt, den ich zuletzt erstellt habe. Es ist überhaupt nicht klug als Methode, aber es dient auch als Bericht, dass es gut funktioniert hat.
Letztes Mal> http://qiita.com/Gen6/items/11fa5265053da95fcf0b
mysite/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
Der Teil, über den ich in Django (letztes Jahr) gestolpert bin, heißt models.py. Ich war mir nicht sicher, was ich tatsächlich tat, aber es ist wie das Definieren einer sogenannten Datenbanktabelle.
myapp/models.py
from django.db import models
class Supermodel(models.Model):
user_name = models.CharField(max_length=140)
user_id = models.CharField(max_length=140)
user_img = models.CharField(max_length=140)
user_text = models.TextField(null=True)
user_created_at = models.CharField(max_length=140)
def __str__(self):
return self.user_name
Ich möchte den Benutzernamen, die ID, die Miniaturansicht, den Textkörper, das Datum und die Uhrzeit aus den Tweet-Daten speichern, damit sie so geschrieben sind. Ich habe mich gefragt, wie der Name Supermodel lautet, aber ich habe ihn geschrieben, also kann ich nichts dagegen tun.
Ich wollte auch überprüfen, ob es tatsächlich auf dem Verwaltungsbildschirm von Django funktioniert, also werde ich es auch hier schreiben.
myapp/admin.py
from django.contrib import admin
from myapp.models import Supermodel
class SupermodelAdmin(admin.ModelAdmin):
list_display = ('id','user_id','user_name','user_img','user_text','user_created_at')
admin.site.register(Supermodel,SupermodelAdmin)
$ python manage.py makemigrations myapp
$ python manage.py migrate
Wenn erfolgreich, fahren Sie mit dem nächsten fort. Um ehrlich zu sein, bin ich mir da nicht ganz sicher, deshalb denke ich, dass es besser ist, die Beschreibungen anderer Leute zu lesen.
myapp/views.py
from requests_oauthlib import OAuth1Session
import time, calendar
import datetime
import json
import re
import os
import requests
import sys, codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
from django.http.response import HttpResponse
from django.shortcuts import render
from myapp.models import Supermodel
def index(request):
msg = request.GET.get('words')
C_KEY = '**************************'
C_SECRET = '**************************'
A_KEY = '**************************'
A_SECRET = '**************************'
url = 'https://api.twitter.com/1.1/statuses/update.json'
params = {'status': msg,'lang': 'ja'}
tw = OAuth1Session(C_KEY,C_SECRET,A_KEY,A_SECRET)
req = tw.post(url, params = params)
url = 'https://api.twitter.com/1.1/statuses/home_timeline.json'
params = {'count': 1}
req = tw.get(url, params = params)
if req.status_code == 200:
timeline = json.loads(req.text)
limit = req.headers['x-rate-limit-remaining']
for tweet in timeline:
Text = (tweet['text'])
User = (tweet['user']['screen_name'])
Name = (tweet['user']['name'])
Img = (tweet['user']['profile_image_url'])
Created_at = YmdHMS(tweet['created_at'])
data = Supermodel()
data.user_id = User
data.user_name = Name
data.user_img = Img
data.user_text = Text
data.user_created_at = Created_at
data.save()
Message = {
'Words': msg,
'timeline': timeline,
'API_limit': limit,
'Text': Text,
'User': User,
'Name': Name,
'Img': Img,
'Created_at': Created_at,
}
return render(request, 'index.html', Message)
else:
Error = {
'Error_message': 'API eingeschränkt',
}
return render(request, 'index.html', Error)
def YmdHMS(created_at):
time_utc = time.strptime(created_at, '%a %b %d %H:%M:%S +0000 %Y')
unix_time = calendar.timegm(time_utc)
time_local = time.localtime(unix_time)
return int(time.strftime('%Y%m%d%H%M%S', time_local))
Suimasen mit einem schmutzigen Code ist jetzt vollständig.
Sie können dies unter localhost / admin überprüfen. Es ist wirklich einfach. Tatsächlich.
Wenn Sie die Such-API verwenden, können Sie die Suchergebnisse in die Datenbank importieren.
Recommended Posts