public:computer:python

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
public:computer:python [2021/08/03 02:17] alexpublic:computer:python [2023/01/02 15:20] (current) – [References] alex
Line 4: Line 4:
 ===== prepare ===== ===== prepare =====
  
 +==== on WSL2 ====
 +{{page>:public:computer:wsl#python_settings&noheader}}
 ==== get python ==== ==== get python ====
  
Line 15: Line 17:
     * <del>pyCharm</del>     * <del>pyCharm</del>
  
-<sxh bash>+<cli>
 $ python3 hello_world.py $ python3 hello_world.py
-</sxh>+</cli>
  
 ===== variables and types ===== ===== variables and types =====
Line 443: Line 445:
   * pygame   * pygame
  
-<sxh bash>+<cli>
 $ python3 -m pip install --user pygame $ python3 -m pip install --user pygame
-</sxh>+</cli>
  
 <sxh python> <sxh python>
Line 498: Line 500:
 ===== data visualization ===== ===== data visualization =====
  
-<sxh bash>+<cli>
 $ python3 -m pip install --user matplotlib $ python3 -m pip install --user matplotlib
-</sxh>+</cli>
  
 <sxh python> <sxh python>
Line 532: Line 534:
   * ax.get_yaxis().set_visible(False)   * ax.get_yaxis().set_visible(False)
  
-<sxh bash>+<cli>
 $ python3 -m pip install --user plotly $ python3 -m pip install --user plotly
-</sxh>+</cli>
  
   * https://plot.ly/python   * https://plot.ly/python
Line 579: Line 581:
  
   * ax.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)   * ax.fill_between(dates, highs, lows, facecolor='blue', alpha=0.1)
 +
 +
 +<cli>
 +$ python3 -m pip install --user requests
 +</cli>
 +
 +<sxh python>
 +import requests
 +
 +# API 호출을 보내고 응답을 저장
 +url = 'https://api.github.com/search/repositories?q=language:python&amp;sort=stars'
 +headers = {'Accept': 'application/vnd.github.v3+json'}
 +r = requests.get(url, headers=headers)
 +print(f"Status code: {r.status_code}")
 +
 +# API 응답을 변수에 저장
 +response_dict = r.json()
 +
 +# 결과 처리
 +print(response_dict.keys())
 +</sxh>
 +
 +  * 두 개의 그래프 그리기 -> 두 그래프 사이 칠하기
 +  * 에러 체크; except ValueError:
 +  * 세계 지도 만들기 -> 지도에 표시 -> 마커 크기 조절 -> 마커 색깔 -> 다른 컬러 스케일 -> 텍스트 추가 
 +  * 커스텀 툴팁 추가
 +  * 그래프에 클릭할 수 있는 링크 추가
  
  
Line 584: Line 613:
 ===== web application ===== ===== web application =====
  
 +==== virtual environment ====
 +<cli>
 +$ python3 -m venv ll_env  # ll_env란 이름으로 가상 환경 만들기
 +$ source ll_env/bin/activate  # ll_env의 가상 환경 활성화
 +(ll_env)$ deactivate  # ll_env 가상 환경 활성화 상태에서 사용 중지
 +</cli>
  
 +==== install django ====
 +<cli>
 +(ll_env)$ pip install django  # ll_env 가상 환경에서 장고 설치
 +(ll_env)$ django-admin startproject learning_log . # learning_log라는 이름으로 프로젝트 생성 마지막에 . 반드시 입력 -> learning_log 디렉토리 안에 settings.py, urls.py, wsgi.py 생성
 +(ll_env)$ python manage.py migrate  # 데이터베이스 생성 -> 기본적으로 db.sqlite3 생성
 +(ll_env)$ python manage.py startapp learning_logs  # learning_logs라는 이름의 앱 생성 -> model.py, admin.py, views.py
 +(ll_env)$ python manage.py runserver  # 프로젝트 실행
 +</cli>
  
 +==== 모델 정의 ====
 +<sxh python>
 +from django.db import models
  
 +class Topic(models.Model):
 +    """....."""
 +    ...
 +    def __str__(self):
 +        ...
 +        
 +</sxh>
  
 +  * settings.py 파일
 +<sxh python|settings.py>
 +INSTALLED_APPS = [
 +    # 내 앱
 +    'learning_logs',
 +    
 +    # 장고 기본 앱
 +    'django.contrib.admin',
 +    'django.contrib.auth',
 +    'django.contrib.contenttypes',
 +    'django.contrib.sessions',
 +    'django.contrib.messages',
 +    'django.contrib.staticfiles',
 +]
 +...
 +</sxh>
  
 +  * model을 수정하면 makemigrations를 먼저 실행하고 -> migrate 실행
 +<cli>
 +(ll_env)$ python manage.py makemigrations learning_logs
 +(ll_env)$ python manage.py migrate
 +</cli>
  
 +  * superuser 생성
 +<cli>
 +(ll_env)$ python manage.py createsuperuser
 +</cli>
  
 +  * 관리자 사이트에서 모델 등록
 +  * 주제 추가
 +
 +  * 장고 셸; quit to Ctrl-D or Ctrl-Z(on Windows)
 +<cli>
 +(ll_env)$ python manage.py shell
 +</cli>
 +
 +  * urls.py
 +<sxh python>
 +from django.contrib import admin
 +from django.urls import path
 +
 +urlpatterns = [
 +    path('admin/', admin.site.urls),
 +    path('', include('learning_logs.urls')),
 +]
 +</sxh>
 +
 +  * views.py
 +<sxh python>
 +from django.shortcuts import render
 +
 +# view here
 +</sxh>
 +
 +  * decorator; @login_required on views.py
 +
 +
 +  * other references;
 +    * bootstrap library
 +    * heroku; PaaS
 +    * Git;
 +
 +<cli>
 +(ll_env)$ pip install django-bootstrap4  # bootstrap4 설치
 +</cli>
 +
 +<cli>
 +(ll_env)$ pip install psycopg2==2.7.*
 +(ll_env)$ pip install django-heroku
 +(ll_env)$ pip install gunicorn
 +</cli>
 +
 +  * requirements.txt 파일; 작성한 프로젝트에 필요한 패키지들 모음
 +<cli>
 +(ll_env)$ pip freeze > requirements.txt
 +</cli>
 +
 +  * runtime.txt
 +<sxh>
 +python-3.7.2
 +</sxh>
 +
 +  * Procfile
 +<sxh>
 +web: gunicorn learning_log.wsgi --log-file -
 +</sxh>
 +
 +  * git
 +<cli>
 +(ll_env)$ git --version
 +</cli>
 +  * .gitignore
 +<sxh>
 +ll_env/
 +__pycache__/
 +*.sqlite3
 +</sxh>
 +
 +  * 헤로쿠 배포
 +    * 헤로쿠 계정
 +    * 헤로쿠 cli 설치
 +    * 필수 패키지 설치
 +    * requirements.txt 생성
 +    * 파이썬 런타임 명시; runtime.txt
 +    * 헤로쿠에서 쓸 수 있도록 settings.py 수정
 +    * Procfile 만들기
 +    * git을 사용해 프로젝트 파일 추적; 깃 설치 -> 설정 -> .gitignore 생성 -> 프로젝트 커밋
 +    * 헤로쿠에 올리기
 +    * 헤로쿠 데이터 베이스 세팅
 +    * 헤로쿠 배포 과정 개선; 헤로쿠에 슈퍼유저 생성 -> 사용하기 쉬운 url 만들기
 +    * 프로젝트 보안; settings.py의 DEBUG 플래그 설정
 +    * 커밋과 푸시
 +    * 헤로쿠에서 환경 변수 세팅하기
 +    * 커스텀 에러 페이지 만들기; 커스텀 템플릿 만들기 -> 로컬에서 에러 페이지 보기 -> 헤로쿠에 변경 내용 올리기 -> get_object_or_404() 메서드
 +    * SECRET_KEY 세팅
 +    * 헤로쿠에서 프로젝트 삭제
 +
 +
 +===== Python Keywords and internal functions =====
 +==== keywords ====
 +  * False
 +  * None
 +  * True
 +  * and
 +  * as
 +  * assert
 +  * async
 +  * await
 +  * break
 +  * class
 +  * continue
 +  * def
 +  * del
 +  * elif
 +  * else
 +  * except
 +  * finally
 +  * for
 +  * from
 +  * global
 +  * if
 +  * import
 +  * in
 +  * is
 +  * lambda
 +  * nonlocal
 +  * not
 +  * or
 +  * pass
 +  * raise
 +  * return
 +  * try
 +  * while
 +  * with
 +  * yield
 +
 +==== python internal functions ====
 +  * abs()
 +  * all()
 +  * any()
 +  * ascii()
 +  * bin()
 +  * bool()
 +  * breakpoint()
 +  * bytearray()
 +  * bytes()
 +  * callable()
 +  * chr()
 +  * classmethod()
 +  * compile()
 +  * complex()
 +  * delattr()
 +  * dict()
 +  * divmod()
 +  * enumerate()
 +  * eval()
 +  * exec()
 +  * filter()
 +  * float()
 +  * format()
 +  * frozenset()
 +  * getattr()
 +  * globals()
 +  * hasattr()
 +  * hash()
 +  * help()
 +  * hex()
 +  * id()
 +  * input()
 +  * int()
 +  * isinstance()
 +  * issubclass()
 +  * iter()
 +  * len()
 +  * list()
 +  * locals()
 +  * map()
 +  * max()
 +  * memoryview()
 +  * min()
 +  * next()
 +  * object()
 +  * oct()
 +  * open()
 +  * ord()
 +  * pow()
 +  * print()
 +  * property()
 +  * range()
 +  * repr()
 +  * reversed()
 +  * round()
 +  * set()
 +  * setattr()
 +  * slice()
 +  * sorted()
 +  * staticmethod()
 +  * str()
 +  * sum()
 +  * super()
 +  * tuple()
 +  * type()
 +  * vars()
 +  * zip()
 +  * __import__()
 +
 +===== References =====
 +  * [[https://wikidocs.net/131351|098 고유한 식별자를 만들려면? ― uuid]]
 +    * <sxh python>
 +import uuid
 +strLongUUID = uuid.uuid1()
 +print(strLongUUID)
 +print(strLongUUID.bytes)
 +print(strLongUUID.hex)
 +print(strLongUUID.int)
 +print(strLongUUID.fields)
 +print(strLongUUID.urn)
 +print('')
 +
 +#pip install shortuuid
 +import shortuuid
 +strShortUUID = shortuuid.uuid()
 +print(strShortUUID)
 +print(len(strShortUUID))
 +</sxh>
  • public/computer/python.1627924651.txt.gz
  • Last modified: 2021/08/03 02:17
  • by alex