장고에서 소셜인증하기 - 1. 설치

개요

네이버 아이디를 통해 장고 어플리케이션에 인증을 처리합니다.
적용할 패키지는 django-allauth로 인증, 등록, 계정 관리 및 타사 (소셜) 계정 인증을 처리할 수 있습니다.

총 3회에 걸쳐 소개합니다.

  1. 파이썬 패키지 설치
  2. 네이버 오픈API 이용 신청
  3. 장고에 소셜 어플리케이션 등록

사용환경

  • Python 2.7, 3.3, 3.4, 3.5 or 3.6
  • Django (1.11+)
  • 네이버 오픈API 앱 등록 정보

파이썬 패키지 설치

장고

장고 프로젝트 또는 가상환경에서 파이썬 패키지를 설치합니다.

pip install django-allauth

settings.py

  • 중의. INSTALLED_APPS에 'django.contrib.sites'가 있어야 합니다.
# Specify the context processors as follows:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                # Already defined Django-related contexts here

                # `allauth` needs this from django
                'django.template.context_processors.request',
            ],
        },
    },
]

AUTHENTICATION_BACKENDS = (
    ...
    # Needed to login by username in Django admin, regardless of `allauth`
    'django.contrib.auth.backends.ModelBackend',

    # `allauth` specific authentication methods, such as login by e-mail
    'allauth.account.auth_backends.AuthenticationBackend',
    ...
)

INSTALLED_APPS = (
    ...
    # The following apps are required:
    'django.contrib.auth',
    'django.contrib.messages',
    'django.contrib.sites',

    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    # 네이버 외에 다른 오픈아이디 제공자를 추가하려면 [여기](https://tinyurl.com/y6tsrngg)에서 찾아 추가하면 됩니다.
    'allauth.socialaccount.providers.naver',
)

SITE_ID = 1

LOGIN_REDIRECT_URL = '/'

urls.py

urlpatterns = [
    ...
    url(r'^accounts/', include('allauth.urls')),
    ...
]

설치 후

데이터베이스 테이블을 생성합니다.

./manage.py migrate

추가 작업이 남아 있어 네이버 오픈아이디로 로그인을 할 수 없지만 장고의 기본 로그인과 로그아웃은 동작합니다.

장고에서 slug 사용하기

개요

slug는 의미있는 URL을 만드는데 사용되며, 블로그의 주소에서 주로 볼 수 있습니다.

정의

짧은 라벨로서, 문자, 숫자, 밑줄 또는 하이픈만을 포함. 일반적으로 URL에 사용. 예를 들어, 블로그 엔트리 URL은 다음과 같다고 할 때,
https://www.djangoproject.com/weblog/2008/apr/12/spring/
마지막 부분(spring)이 슬러그입니다.
출처: 용어 | Django 문서 | Django

이 글의 제목이 '장고에서 slug 사용하기'인데 이 글의 URL을 예로 들어 보겠습니다.

  • http://blog.jiktong.kr/1234
  • http://blog.jiktong.kr/%uC7A5%uACE0%uC5D0%uC11C%20slug%20%uC0AC%uC6A9%uD558%uAE30
  • http://blog.jiktong.kr/장고에서-slug-사용하기

마지막 예시가 slug입니다.

환경

  • Django 2.2.1

장고 models.py에서 slug

from django.db import models
from django.utils.text import slugify

class MyModel(models.Model):
  title = models.CharField(max_length=50)
  slug = models.SlugField(max_length=201, db_index=True, unique=True, allow_unicode=True)
  created = models.DateTimeField(auto_now_add=True)

  class Meta:
    ordering = ['-created']
    index_together = [['id', 'slug']]
  • allow_unicode=True 영문을 제외한 다른 언어도 사용할 수 있도록 합니다. => 한글지원
  • db_index=True 해당 필드를 인덱스 열로 지정합니다.
  • index_together = [['id', 'slug']] 'id'와 'slug'필드를 묶어서 색인하는 '멀티 컬럼 색인'을 지원합니다.

장고 urls.py에서 slug

from django.urls import path

from . import views

urlpatterns = [
    path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
]

맥에서 파이썬 사용환경 만들기


homebrew 설치


homebrew 설치 디렉토리 설정

.bash_profile 추가

export PATH=/usr/local/bin:/usr/local/sbin:$PATH




python, python3 최신버전 설치

설치경로 확인은 which 사용한다.



pip와 pip3는 brew로 python을 설치할 경우 함께 설치된다. #2017년 1월 18일 수정

굳이 pip를 설치하려면

$ sudo easy_install pip

또는 $ sudo easy_install pip3



virtualenv 설치

$ sudo pip install virtualenv

또는 $ sudo pip3 install virtualenv


가상환경 구성

$ virtualenv -p python env27

또는 $ virtualenv -p python3 env36

'python & django' 카테고리의 다른 글

장고에서 slug 사용하기  (0) 2019.05.09
파이썬 사용환경 만들기  (0) 2017.01.14
파이썬의 정수 나누기 연산  (0) 2016.11.29
우분투에서 장고1.4 설치하기  (0) 2014.10.29
파이썬의 정수 나누기 연산에 대해 정리입니다.

파이썬의 사칙연산은 + - * /(나누기)가 있고,
나누기 연산은 // % /를 사용한다.

몫을 구할때 //
나머지 구할때 %
나누기는 /로 이해하자.

나누기 연산 중에 헷갈리는 연산자가 있는데 바로 몫 구하기

Python 2.7.10 (default, Jul 30 2016, 18:31:42)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 3//2
1
>>> 3/2
1

위와 같이 차이가 없어 보인다.
하지만, 실수 연산을 해 보면 구분할 수 있다.
실수 연산을 위해 __future__를 임포드하는 방법도 있다.

>>> from __future__ import division
>>> 3//2
1
>>> 3/2
1.5

이제야 몫과 나머지가 구분이 된다.

파이썬3에서의 연산
Python 3.5.2 (default, Oct 11 2016, 04:59:56)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.38)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 3//2
1
>>> 3/2
1.5


그 외에 몫과 나머지를 돌려주는 함수
>>> 1.5
1.5
>>> divmod(3,2)
(1, 1)
>>> a,b = divmod(3,2) #a는 몫, b는 나머지
>>> a
1
>>> b
1


sudo pip install django==1.4

Lastest MongoDb package on debian is bind to 127.0.0.1, this address doesn’t allow the connection by remote hosts, to change it u must set bind to 0.0.0.0 for eg

root@debian:/var/www# nano /etc/mongodb.conf



bind_ip = 0.0.0.0

port = 27017


root@debian:/var/www/lithium# /etc/init.d/mongodb restart

Done! Remember to secure the connection by password in production mode.

http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

https://www.youtube.com/watch?v=xtDhjzi5va8

+ Recent posts