[PYTHON] Twitter OAuth mit Django

Ich habe diesen Artikel genutzt und gepostet. Ich werde auch die Twitter-Authentifizierung auf Django versuchen.

[Anmerkung] Twitter OAuth mit Pyramide http://qiita.com/maueki/items/02f001440ce409641a50

Django Standard-Benutzerauthentifizierung

Vor der Twitter-Authentifizierung verfügt Django von Anfang an über eine Benutzerauthentifizierung. Schauen wir uns das zuerst an.

Umweltvorbereitung

Installieren Sie zuerst Django.

$ pip install django

Diesmal habe ich es mit Version 1.10.5 versucht. Python ist 3.5.2. Erstellen Sie als Nächstes ein Django-Projekt und einen Administrator.

$ django-admin startproject myoauth
$ cd myoauth
$ python manage.py migrate
$ python manage.py createsuperuser

Erstellen Sie als Nächstes eine Anwendung.

$ python manage.py startapp app

Fügen Sie die erstellte Anwendung zu INSTALLED_APPS in settings.py hinzu. (Übrigens kann es sinnvoll sein, die Gebietsschemaeinstellungen zu ändern.)

setting.py


INSTALLED_APPS = (
    :
    'app.apps.AppConfig',
)

LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'

Die Details dieses Bereichs können leicht anhand des Tutorials der Hauptfamilie verstanden werden. https://docs.djangoproject.com/ja/1.9/intro/tutorial01/

Anmelde- / Abmeldeseite

Melden Sie sich bei urls.py an und geben Sie die URL und die Ansicht für die Abmeldung an. Ansicht ist standardmäßig vorbereitet. (Ansicht ist eine Ansicht mit MTV-Muster.)

urls.py


import django.contrib.auth.views

urlpatterns = [
    :
    url(r'^login/$',
        django.contrib.auth.views.login,
        {
            'template_name': 'app/login.html',
        },
        name='login'),
    url(r'^logout/$',
        django.contrib.auth.views.logout,
        {
            'template_name': 'app/logout.html',
        },
        name='logout'),
]

login.html wird so vorbereitet.

login.html


:
<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<table>
<tr>
    <td>{{ form.username.label_tag }}</td>
    <td>{{ form.username }}</td>
</tr>
<tr>
    <td>{{ form.password.label_tag }}</td>
    <td>{{ form.password }}</td>
</tr>
</table>

<input type="submit" value="login" />
<input type="hidden" name="next" value="{{ next }}" />
</form>
:

Beschreiben Sie die URL, die nach der Anmeldung bei settings.py umgeleitet wird, und die URL, die beim Zugriff auf die später beschriebene eingeschränkte Seite verschoben wird.

setting.py


LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/login/'

Überprüfen Sie den Anmeldestatus

Wenn Sie der Ansicht den Dekorator "login_required" hinzufügen, können Sie ihn nur einschränken, wenn Sie angemeldet sind. Wenn Sie nicht angemeldet sind, werden Sie zu der in settings.py festgelegten LOGIN_URL umgeleitet.

views.py


from django.contrib.auth.decorators import login_required

@login_required
def private(request):
    ...

urls.py


urlpatterns = [
    :
    url(r'^private/$', app.views.private, name='private'),
]

Darüber hinaus können Sie den Dekorator "user_passes_test" verwenden, um Benutzern im Lambda beliebige Überprüfungen hinzuzufügen. Das folgende Beispiel ist auf Superuser-Berechtigungen beschränkt.

views.py


from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u: u.is_superuser)
def private(request):
    ...

Twitter-Authentifizierung

Versuchen Sie als Nächstes die Twitter-Authentifizierung.

Anmeldung zur Bewerbung

Registrieren Sie als vorläufige Vorbereitung die Anwendung auf der Entwicklerseite von Twitter. https://apps.twitter.com

Sie benötigen diese beiden Schlüssel.

Bibliothek für OAuth hinzugefügt

Es scheint verschiedene Optionen zu geben, aber dieses Mal habe ich "social-auth-app-django" verwendet. Neben Twitter können Facebook und GitHub auf die gleiche Weise genutzt werden.

$ pip install python-social-auth[django]

Die Version, die ich dieses Mal ausprobiert habe, ist 1.0.0.

setting.py


INSTALLED_APPS = (
    :
    'social_django',
)

TEMPLATES = [
    {
        :
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.template.context_processors.media',
                'django.template.context_processors.static',
                'social_django.context_processors.backends',
                'social_django.context_processors.login_redirect',
            ],
        },
    },
]

AUTHENTICATION_BACKENDS = [
    'social_core.backends.twitter.TwitterOAuth',
    'django.contrib.auth.backends.ModelBackend',
]

SOCIAL_AUTH_TWITTER_KEY = 'Consumer Key'
SOCIAL_AUTH_TWITTER_SECRET = 'Consumer Secret'

Sie können eine Schaltfläche vorbereiten, um zur Twitter-Authentifizierung wie folgt zu springen.

login.html


<button type="button" onclick="location.href='{% url 'social:begin' 'twitter' %}'">Twitter</button>

urls.py


urlpatterns = [
    :
    url(r'', include('social_django.urls', namespace = 'social')),
]

Da ich eine Anwendung hinzugefügt habe, werde ich sie am Ende migrieren.

$ python manage.py migrate

Sie können sich jetzt bei Twitter authentifizieren. Nach der Authentifizierung wird es dem Standardbenutzermodell von Django hinzugefügt, sodass Sie den Anmeldestatus auf die gleiche Weise wie bei der Standardbenutzerauthentifizierung überprüfen können.

Recommended Posts

Twitter OAuth mit Django
Qiita API Oauth mit Django
Klicken Sie nach der Oauth-Authentifizierung mit Django auf die Twitter-API
Twitter-Posting-Anwendung mit Django gemacht
Internationalisierung mit Django
CRUD mit Django
Authentifizieren Sie Google mit Django
Django 1.11 wurde mit Python3.6 gestartet
Laden Sie Dateien mit Django hoch
Entwicklungsverdauung mit Django
PDF mit Django ausgeben
Markdown-Ausgabe mit Django
Verwenden Sie Gentelella mit Django
Erste Schritte mit Django 1
Mail mit Django senden
Datei-Upload mit Django
Verwenden Sie WENIGER mit Django
Pooling mechanisieren mit Django
Verwenden Sie MySQL mit Django
Django ab heute
Erste Schritte mit Django 2
Mach Django mit CodeStar (Python3.6.8, Django2.2.9)
Fangen Sie mit Django an! ~ Tutorial ⑤ ~
Minimale Konfigurations-Website-Umgebung mit Django
Erstellen Sie eine API mit Django
Twitter-Grafiknotiz mit Python
Holen Sie sich Twitter-Timeline mit Python
Verwenden Sie die Twitter-API mit Python
Extrahieren Sie Twitter-Daten mit CSV
Mach Django mit CodeStar (Python3.8, Django2.1.15)
Stellen Sie Django serverlos mit Lambda bereit
Python3 + Django ~ Mac ~ mit Apache
Erste Schritte mit Python Django (1)
Erstellen Sie eine Homepage mit Django
Fangen Sie mit Django an! ~ Tutorial ④ ~
Erste Schritte mit Python Django (4)
Erstellen Sie eine Webanwendung mit Django
Erste Schritte mit Python Django (3)
Kombinieren Sie Fast API mit Django ORM
Fangen Sie mit Django an! ~ Tutorial ⑥ ~
Verwenden Sie Django, um Tweet-Daten zu speichern
Führen Sie eine AES-Verschlüsselung mit DJango durch
Einführung in Python Django (6)
Unterstützen Sie sich mit der Twitter API
Kombiniere zwei Bilder mit Django
Suche nach Twitter-Tweets mit Python
Erste Schritte mit Django mit PyCharm
Echtzeit-Web mit Django-Kanälen
Doppelte Submit-Unterdrückung mit Django
Django REST Framework mit Vue.js
Erfolgreiches update_with_media mit Twitter API
Verwenden Sie prefetch_related bequem mit Django
Erste Schritte mit Python Django (5)
Melden Sie sich mit dem Django Rest Framework an
Testgetriebene Entwicklung mit Django Teil 3
Schritte zur Entwicklung von Django mit VSCode
Testgetriebene Entwicklung mit Django Teil 4
Richten Sie mit Django ein soziales Login ein
Testgetriebene Entwicklung mit Django Teil 6
Messen Sie die Abdeckung der Django-Anwendung mit Coverage.py