Django How to delete superuser

Create Django Superuser $ python manage.py createsuperuser Delete Django Superuser (venv) $ python manage.py shell Python 3.7.6 (default, Jan 8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from django.contrib.auth import get_user_model >>> >>> User = get_user_model() >>> User.objects.get(usern..

Django Parsing Json in Function based view

Django를 사용해서 RESTful API를 만들 일이 많아졌는데, 이 때 function based view에서 어떻게 하면 자동으로 JSON 형식의 데이터를 파싱하고 Swagger(drf-yasg)에 API화 할 수 있는지 포스팅하려고 한다. settings.py REST_FRAMEWORK = { 'DEFAULT_PARSER_CLASSES': [ 'rest_framework.parsers.JSONParser', ] } app/views.py from django.http import JsonResponse from rest_framework.parsers import JSONParser from rest_framework.decorators import api_view, parser_classes ..

Django Customizing Default User Model

장고를 사용하다보면 User Model에 새로운 정보를 추가해야 할 상황이 생긴다. 가장 쉽고 간편한 방법은 ProxyModel을 만드는 것이지만, 굳이 그렇게 하고 싶지 않은 상황이 올 수 밖에 없다. 최근 이러한 경우가 생겨서 관련 내용을 포스팅해보려고 한다. User/models.py # coding: utf-8 from django.db import models from django.contrib.auth.models import AbstractUser, UserManager as BaseUserManager from django.core.exceptions import ObjectDoesNotExist from django.db.utils import IntegrityError class Use..

Javascript Nullish coalescing operator

자바스크립트를 사용하다 보면 undefined 때문에 뜨는 오류가 상당하다. 이를 해결하기 위해서 논리연산자를 사용하기도 한다. 이 경우 논리연산자는 다음과 같이 활용한다. let foo = undefined || "bar"; console.log(foo); // bar 만약 undefined 나 null 인 경우에는 논리연산자가 의도대로 작동하는 것을 볼 수 있으나, 만약 Falsy한 값이 온다면 프로그래머의 의도와는 반대로 작용할 가능성이 있다. 아래의 코드는 Falsy한 값이 왔을 때의 실행결과이다. let foo = 0 || 128; console.log(foo); // 128 let bar = false || "hi"; console.log(bar); // hi 이러한 상황을 해결하기 위해서 만..

Python3 requests에서 r.text와 r.content의 차이

1. 개요 Python3에서 불과 3~4년 전만 하더라도 urlib를 사용하여 HTTP 자원에 접근하는 코드가 많았지만, 이제는 거의다 requests 모듈을 사용하는 추세이다. 그만큼 requests 모듈의 편리성과 확장성이 Pythonic하다고 볼 수 있다. requests 모듈에서 HTTP Response에 접근하는 방법은 크게 두가지가 있다. 하나는 r.text이고 하나는 r.content이다. ※ 이 글에서 설명하는 내용은 다음과 같은 코드가 실행된 상태라고 가정한다. import requests url = 'https://www.example.com/' r = requests.get(url) 2. r.text r.text의 경우엔 HTTP Request를 보낸 URL에서 readable한 내용..

Django에서 Python Decorator 사용하기

데코레이터를 사용하면 여러줄의 코드를 여러번 작성할 필요없이 한줄만으로 특정한 메커니즘을 실행할 수 있다. from django.http import HttpResponse def only_admin(f): def check(request, *args, **kwargs): try: if request.user.admin is not True: return JsonResponse({ 'status': False, 'message': 'admin permission is required' }) except: return JsonResponse({ 'status': False, 'message': '\'sign in\' is required' }) return f(request, *args, **kwargs)..

백준 1018번 체스판 다시 칠하기 write-up

#!/usr/bin/env python3 # coding: utf-8 def set_plate(): n, m = map(int, input().split()) plate = [] for i in range(n): row = list(input()) plate.append(row) return n, m, plate def get_repaint(plate): result = [] row = [ ['W', 'B'] * 4, ['B', 'W'] * 4 ] for i in range(2): repaint = 0 for j in range(8): check = row[(i + j) % 2] for k in range(8): if plate[j][k] != check[k]: repaint += 1 result.app..

Chrome Extension을 통한 수강신청 사이트 키 금지 기능 무효화

아직 20학번 새내기라서 수강신청을 해본 적은 없다. 그러나 주변에서 [Tab]와 [Spacebar]만으로 수강신청을 마스터할 수 있었지만 대학교 수강신청 사이트에서 이를 막는 추세라서 이제는 빠르게 수강신청하기가 어려워졌다는 소문을 들은 적이 있다. 오늘 학번을 발급받은 김에 이 현상을 확인해보려고 경희대학교 수강신청 사이트에 접속해보았는데 역시나 F5, 스페이스바 등의 키가 금지되어있었다. 해당 키를 금지하는 기능은 당연히 Javascript 단에서 onkeydown 등의 event를 일일이 검사하는 방식으로 수행될 것이라고 생각했다. 역시는 역시. 아래는 경희대학교 수강신청 사이트에서 키 입력 금지 메커니즘을 구현한 코드이다. function noKeyCheck(){ if (event.keyCode..

Pub/Sub 계층을 통한 프로그래밍

만약에 어떠한 사이트에 사용자가 가입하는 경우 사이트는 사용자에게 사용자의 정보를 받고 DB에 저장하고 e-mail을 보내고 Event Tracker를 통해 로그를 저장하는 등 다양한 procedure를 거칠 때가 많다. 이 때 코드를 한 번에 다 때려박곤 했었는데 이게 크게 잘못된 생각임을 알게 되었다. 다음과 같은 코드가 내가 평소에 쓰던 방식이다. import UserModel from '../models/user'; import CompanyModel from '../models/company'; import SalaryModel from '../models/salary'; export default class UserService() { async Signup(user) { const userR..