본문 바로가기
반응형

Programming/Python_Web26

파이썬 정적 사이트 생성기(SSG) 펠리칸 (Pelican) 시작하기 파이썬하면 요즘 ML/DL, 데이터분석 등으로 엄청난 인기를 끌고 있는데요. 웹프로그래밍에서도 매우 많은 인기가 있습니다. 우리나라에서는 점유율이 많이 못미치지만, 해외에서 Django, FastAPI등은 매우 좋은 반응을 보이고 있습니다. 오늘 소개할 도구는 Django나 FastAPI와 같은 서버도구는 아닌, 파이썬으로 만들어진 정적사이트 생성기 펠리칸(Pelican)입니다. 1. 설치 우선 일반적인 파이썬 프로젝트 시작방법과 마찬가지로 가상환경을 만들어줍니다. (pycharm을 활용하면 쉽게 가상환경이 만들어집니다. VSCode로 진행하면 조금 까다로우니, 다른 포스팅을 참고하세요). 가상환경이 만들어지면 아래의 pip install ~ 로 pelican을 설치합니다. pip install peli.. 2023. 7. 25.
Django - Gitlab - Heroku CD/CI 배포 와 Freenorm DNS연결 Django앱을 Gitlab에 올리고, Heroku로 자동 배포하는 방법, 그리고 Freenorm의 무료 DNS를 적용하는 방법을 알아보겠습니다. 순서는 아래와 같습니다. django 앱 생성 (본문은 Django의 사용법을 다루는 글이 아니므로, 기본적인 앱은 만들어져 있어야 합니다.) Heroku repo 생성 Gitlab repo 생성 CD/CI설정 (Gitlab 추가설정 및 파일 추가 생성) 추가 설정 (오류 점검) 외부DNS(Freenom) 적용 1. Django 앱 생성 기본적인 앱이 구현되어있겠지만, 앱을 배포하기 위해서는 추가적인 라이브러리 설치가 필요합니다. pip install gunicorn whitenoise django-herok # gunicorn: 위에서 설명한 파이썬 HTTP.. 2022. 10. 9.
Python - Django 시작하기 4 - oracle DB ORM Join Oracle DB의 테이블을 이용해서 Join하는 방법을 알아보겠습니다. 1. 모델 정의 1:N관계에서 N쪽 테이블(TempDataroomHstry클래스)에 ForeignKey로 1쪽 테이블명(Temp래스)을 지정해줍니다. 이때, 1쪽 테이블의 참조하려는 필드가 Primary Key로 지정되어있으면 상관없지만, 없을 경우 필드 정의에(ForeignKey 함수 내부에서) to__field='목표필드' 를 지정해줘야 합니다. 그리고, db_column='참조칼럼명' 에서 해당 테이블에서 참조할 실제 칼럼(필드)명을 지정해줘야 합니다. (*) Oracle DB에서만 이런 문제가 발생하는 것인지.. 아직은 잘 모르겠습니다. 이것 때문에 한참을 헤메었네요..^^;; 또한 이번의 경우 Temp의 emp_field와.. 2021. 11. 18.
Python Open API(XML) 활용하기 - 부동산 매매가격 import pandas as pd import requests from bs4 import BeautifulSoup key = '내 서비스키' # url='http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade?LAWD_CD=11110&DEAL_YMD=201512&serviceKey='+key url='http://openapi.molit.go.kr:8081/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcAptTrade?serviceKey='+key rowList=[] # 전체 행을 저장할 변수 nam.. 2021. 11. 8.
Python - Django 시작하기 3 - blog app 추가하기 블로그 앱을 추가하도록 하겠습니다. 블로그 앱에서는 메인인 Home.html에서 포스트 클릭 시 포스트를 출력해주는 기능입니다. 1. blog app 추가 블로그 앱을 생성해줍니다. django-admin startapp blog 2. mysite/settings.py 수정 블로그 앱을 등록해줍니다. INSTALLED_APPS = [ 'blog.apps.BlogConfig',# 추가 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] 3. blog/models.py .. 2021. 10. 13.
Python - Django 시작하기 2 - start bootstrap template 적용 Start Bootstrap에서 템플릿을 받아와서 메인 페이지를 구성하겠습니다. 1. Start Bootstrap 템플릿 다운로드 우선 Google에서 start bootstrap으로 검색하여 해당 사이트로 이동합니다. 다음으로 Themes 메뉴를 클릭한 다음, Free 옵션을 선택(Pro 해제) 하여 무료 옵션 중에서 적당한 테마를 고릅니다. 클릭하여 나타나는 상세 페이지에서 Download를 해 줍니다. 그리고 Template에서도 블로그용 template를 받아줍니다. 다운로드 받은 Theme 파일은 아래와 같이 static폴더와 templates폴더에 나누어 넣어줍니다. index.html 파일은 home.html로 이름을 바꾸어줍니다. 2. home.html 파일 수정 파일 링크를 참조하는 "s.. 2021. 10. 13.
Python - Django 시작하기1 - 설치 1. 프로젝트 생성 ( 가상환경 생성) 2. 라이브러리 설치 pip install django 3. Django 프로젝트 설치 현재 폴더에 ( . ) mysite라는 프로젝트를 생성해줍니다. 이 경우 manage.py파일이 현재 폴더에 생성됩니다. (현재 폴더를 지정하지 않으면 한단계 더 아래 폴더에 프로젝트 및 manage.py 파일을 생성합니다. ) django-admin startproject mysite . 4. setting.py 수정 DB / Template / Media / Static 관련된 폴더들을 만들고, 이들 경로를 BASE_DIR을 기준으로 지정해줍니다. 그리고 TIME_ZONE, USE_TZ 값을 수정해줍니다. """ Django settings for mysite project... 2021. 10. 13.
FastAPI - Jinja2, Form, Redirect 적용 Database에서 간단히 CRUD만 구성할 일이 있었는데, Backend 와 Frontend를 분리해서 구축하려니 조금 번거로워서 찾게되었습니다. Python 프레임워크들은 Jinja2 템플릿을 사용하여 Frontend도 쉽고 빠르게 구축할 수 있도록 지원해주기 때문에, 이런 용도로는 잘 맞는 것 같습니다. FastAPI도 일반적으로는 API 형태의 backend를 구성하겠지만, Jinja2를 이용하여 Frontend 연결까지 해보도록 하겠습니다. 1. 폴더구조 아래와 같이 폴더구조를 만들겠습니다. 이전에 만들었던 main.py를 업데이트하기 위해 mainlist.py 파일을 새로 작성하였습니다. 실행도 mainlist.py로 실행하겠습니다. 2. 라이브러리 설치 pip install fastapi, .. 2021. 9. 11.
FastAPI - MySQL CRUD 1. 폴더구조 2. 라이브러리 설치 pip install fastapi, uvicorn pip install mysql, sqlalchemy pip install starlette 3. 코드 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker, scoped_session user_name = "root" user_pwd = "" db_host = "127.0.0.1" db_name = "project01" DATABASE = 'mysql://%s:%s@%s/%s?charset=utf8' % ( user_name, user.. 2021. 9. 10.
FastAPI 시작하기 1. 폴더구조 2. 라이브러리 설치 pip install fastapi uvicorn pydantic jinja2 import uvicorn from fastapi import FastAPI, Request from fastapi.responses import HTMLResponse from fastapi.templating import Jinja2Templates from pydantic import BaseModel import requests app = FastAPI() db=[] #---------------------------------------------------------------------------------------------------------- # data models c.. 2021. 9. 9.
FastAPI - Jinja2로 프론트 적용하기 1. 설치 pip install fastapi uvicorn pip install aiofiles # CSS파일 로딩 pip install jinja2 2. Project 구성 3. 시작명령어 python app.py 4. app.py import uvicorn from fastapi import FastAPI, Request from fastapi.responses import HTMLResponse from fastapi.staticfiles import StaticFiles from fastapi.templating import Jinja2Templates app = FastAPI() templates = Jinja2Templates(directory="templates") app.mount("/s.. 2021. 9. 9.
Flask강좌6 - 등록/로그인/로그아웃 지금까지 DB 검색 기능에 대해 만들었으나, 사용자 등록, 로그인, 로그아웃 처리를 위해 대대적인 수정이 있겠습니다. 1. users 테이블 구성 우선 시작은 Database 구성부터 하도록 하겠습니다. 지난 members 테이블과는 별도로 사용자 관리를 위한 users 테이블을 생성하도록 하겠습니다. 2.user_model.py 데이터베이스 테이블에 맞춰 User클래스를 생성합니다. 정보는 ID, 이름, 비번이 되겠습니다. from flask_sqlalchemy import SQLAlchemy from datetime import datetime db = SQLAlchemy() class User(db.Model): __tablename__ = 'users' #테이블 이름 : users id = db... 2020. 12. 4.
Flask강좌5 - Flask form입력 form을 이용해 입력을 받고, 처리하여, 다시 결과를 보여주는 로직을 구현하겠습니다. 1. localhost:5000/all의 db.html 화면에서 입력 받고, 2. __init__.py에서 라우팅 처리하고, 3. db.html에 결과를 보여줍니다. 1. __init__.py form 으로부터 전달된 이름('nm')을 받아서 temp 변수에 저장하고, query.filter_by로 DB에서 조회한 후, 결과를 members로 저장합니다. 그리고 members의 갯수를 count에 저장합니다. render_template함수를 통해 db.html로 연결이 되는데, 이때 members와 count를 함께 넘겨줍니다. from flask import Flask, render_template, request.. 2020. 12. 3.
Flask강좌4 - Flask_SQLAlchemy MySQL연동 이번 강좌에서는 ORM 방식으로 Database와 연동하는 방법에 대해 포스팅하겠습니다. ORM은 Object-Relational Mapping 이라고 하여, Database 객체를 객체지향 프로그래밍 언어로 변환하는 기법입니다. (자세한 내용은 다른 포스팅들을 참조하시기 바랍니다.) 그 중에서도 Flask에서 ORM을 구현할 수 있게 해주는 라이브러리가 Flask-SQLAlchemy 입니다. 이 Flask-SQLAlchemy를 이용하여 MySql과 연동해보도록 하겠습니다. 1. Database 자료 생성 아래와 같이 id, name, email, phone, start(datetime), end(datetime)을 필드로 하는 자료를 생성해놓습니다. 2. 라이브러리 설치 먼저 말했듯이 이번 강좌의 메인.. 2020. 12. 2.
Flask강좌3 - Request 1. Request Event Handler 주요 Request Event Handler(Web Filter)는 아래와 같습니다. @app.before_first_requst : 첫번째 요청을 부를 때 @app.before_request : 매 요청에 대해 router가 받아서 모델이 처리하기 전에 @app.after_request : 응답이 나가기 직전에 (DB Close와 같은 작업 처리) @app.teardown_request : 응답이 나가고 나서 @app.teardown_appcontext : application Context가 끝났을 때 2. Request Parameter # GET request.args.get('q') .....> q파라미터를 GET으로 받음 # POST request... 2020. 12. 1.
Flask강좌2 - Global Object: g, Response객체 1. __init__.py 수정 from flask import Flask, g, Response, make_response app = Flask(__name__) app.debug = True #use only debug!! @app.before_request def before_request(); print("before_request!!!") g.str = "한글" @app.route("/gg") def helloworld(): return "Hello World!" +getattr(g, 'str', '111') @app.route("/") def helloworld(): return "Hello Flask World!!!!!!!" @app.route("/res1") def res1(): custo.. 2020. 12. 1.
Flask강좌1 - hello flask! 설치 pip install flask 셋업 webapp (Web application) /helloflask(Web context영역, blog 등) - /static -/css -/images -/js -/templates -application.html -__init__.py (임포트 하는 순간 자동 실행 됨) start_helloflask.py __init__.py from flask import Flask app = Flask(__name__) @app.route("/") def helloworld(): return "Hello Flask!" start_helloflask.py #../start_flask.py from helloflask import app app.run(host='localho.. 2020. 12. 1.
Flask - IIS연동 IIS와 Flask 연동하는 방법에 대한 기록을 남깁니다. 1. flask 설치 pip install flask 2. wfastcgi설치 pip install wfastcgi 3. wfastcgi실행 c:\>wfastcgi-enable python.exe | wfastcgi.py 파일 경로 복사/기록 4. 테스트용 hello.py파일 작성( 예: E:\02_Programming_Work\06_Python\08_flask) 주소창에서 "localhost:7000/" 과같이 입력하면 이 파일에 의해서 Hello Flask!라는 텍스트를 나타내게 합니다. #hello.py from flask import Flask app=Flask(__name__) @app.route('/',methods=['GET']) d.. 2020. 10. 23.
Flask - mysql 연동 오늘은 Flask와 MySQL의 연동에 대해 알아보겠습니다. 진행할 과제는 1. DB 생성 2. Flask APP 구성 3. DB 모듈 생성 (mod_dbconn.py) 4. DB 연결 (__init__.py) 5. DB data 출력 (db.html) 의 순으로 진행하겠습니다. 1. DB 생성 이전 포스팅에서 설치한 XAMPP를 이용하여 MySQL을 실행하고 진행하겠습니다. XAMPP에서 Apache와 MySQL을 Start 해 줍니다. (Apache를 실행해야 MySQL 서버가 실행됩니다.) 다음으로 커맨드 창을 열고 비밀번호를 설정해 줍니다. 그리고서 XAMPP 컨트롤 창의 MySQL의 Admin 버튼을 누르거나 직접 URL을 입력하여 phpmyadmin사이트로 이동합니다. (로그인이 안될 수 있습.. 2020. 8. 21.
Flask - apache 연동(mod_wsgi) 오늘은 Flask 앱을 Apache와 연동시키는 작업을 해보겠습니다. 나중에 나오지만 mod_wsgi설치, httpd.conf파일 수정 등 산넘어 산입니다. ^^;;; 1. 아파치 직접 설치해도 되겠지만, 저는 XAMPP 를 깔겠습니다. 초보니까요..^^;; 이걸 사용하면 Apache, MySQL, PHP 서버를 버튼 클릭으로 간단히 켜고 끌 수 있게 해 줍니다. 주소는 https://www.apachefriends.org/index.html 설치 방법은 다른 글들을 확인하시기 바랍니다. 2. 아파치 인식시키기 우리 목표는 아래 명령을 수행해서 mod_wsgi를 설치하는게 우선적인 목표입니다. pip install mod_wsgi 그런데, 아파치를 설치 했음에도 에러가 발생할 확률이 높습니다. 중간 부분.. 2020. 8. 21.
Django - Database 입력/조회 폼 (폼 클래스 아님) 간단히 Database를 조회/입력할 수 있도록 Form 을 구성하겠습니다. 작동방식은, 최초 접근 시 아래와 같이 DB의 데이터를 보여줍니다. 텍스트 필드에 ID(1, 2, 3..)을 입력하면 해당하는 결과만 나타나게 합니다. 마지막으로, 아래의 데이터 입력폼에 데이터를 입력하면 데이터가 등록되면서, 다시 초기화면에서 전체 리스트를 출력합니다. 데이터베이스에는 Member 테이블이 있고, 인원을 몇명 넣어줄 예정입니다. 필드는 ID, Name, Email이 있습니다. 1. 프로젝트 구성 프로젝트 구성은 아래와 같습니다. Django 프로젝트 / 앱생성이나 기본 설정은 Django 시작하기 다른 포스트를 참조하시기 바랍니다. pip install django // 장고 설치 django-admin sta.. 2020. 6. 14.
Django - Oracle연동 (11g), inspectdb 사용법 아...힘든 하루네요. 회사에서 쓰는게 oracle 11g 2Release 32bit라서 이걸 모델로 집에서 django랑 연동 테스트 해보려고 삽질을 시작했는데... 오전 9:30분에 시작해서 지금, 오후 10:00에서야 드디어 완성했습니다. 그것도 완전한 완성이라고 볼 순 없고 부분적으로 모자란 부분이 있습니다. 오늘 최종적으로 성공한 각 프로그램/모듈의 버전은 아래와 같습니다. oracle 11g 2Release 64bit Python 3.6.1 64bit Django 1.11.22 cx_Oracle 6.3 32비트고 뭐고 왔다갔다 하느라 정신없어서..64비트로 우선 통일! 안되는 영어로 계속 뒤져보니까 요즘나오는 Django 3.0이나 2.X대 버전은 oracle 11g를 지원을 안한다고 합니다... 2020. 5. 21.
Django - IIS에서 static file 설정하기 회사에서 쓰는 windows server2012에서 장고를 실행하려고 알아본 내용을 남깁니다. 1. Static 파일을 위한 '가상 디렉터리 추가' (Django_ex)장고 사이트를 우클릭한 뒤 가상 디렉터리 추가를 클릭해줍니다. 2. 별칭과 실제 경로를 적어줍니다. 3. 핸들러 위치 조정: Django_ex(장고 사이트) -> 처리기 매핑 ->정렬된 목록보기 StaticFile을 가장 위로 옮겨줍니다. 아래쪽에 있는 핸들러는 위쪽 핸들러로부터 상속을 받기 때문에, 아래쪽에 있으면 제대로 작동이 안됩니다. (ps) 외부 포트연결이 설정이 안되어있을 경우 여전히 사이트가 접속 안될 수 있습니다. 포트가 제대로 개방되어있는지 확인하시기 바랍니다. (이전 포스트 참조^^) (끝) 2020. 5. 14.
Django - CSS적용하기 Django에 CSS를 적용하는 방법은 어렵지 않은데... 적용하려면 저같은 초보한테는 쉽지않네요. 우선 기록으로 남겨놓습니다. 1. mysite/setting.py의 STATIC정보를 수정/확인합니다. STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join('static'), ) 2. CSS파일 생성(style.css)하여 아래 경로에 위치시킵니다. mysite/static/css/style.css li a { color: green; } 3. HTML에 static file 로딩부분을 추가해줍니다. {% load static %} # 버전에 따라 staticfiles ~~끝~~ (ps) 각 앱별로 static파일을 정의해놓았을 경우, STATICFILE.. 2020. 5. 13.
Django - IIS 연동 (Windows Server2012) Windows server 2012 IIS환경에서 Django를 연동하는게 쉽지가 않아서 한번 정리해 놓습니다. Django로 직접 서버를 돌릴 수도 있으나, 보안 및 성능상의 문제로 인해 권하지 않는 방법이라고 합니다. 그래서 apache나 nginx등 웹서버와 연동해서 많이 사용하는데요... 저희 회사 환경이 Windows 서버라 IIS 와의 연동이 필요한 상황입니다. 1. pip install wfastcgi Django와 연동을 위해 wfastcgi를 설치합니다. 2. IIS FastCGI 설정 IIS에서 Django에 CGI요청을 전달하기 위해 설정을 해야합니다 1) FastCGI 설정 서버 관리자를 실행시키고, 왼쪽 탐색창에서 서버가 선택된 상태로 FastCGI설정을 클릭합니다. 2) 응용프로.. 2020. 5. 8.
Django - 인터넷 안되는 로컬PC에 설치하기 Django 설치를 위해서는 whl 파일을 내려받아서 설치해야 하는데, https://pypi.org/사이트에서 파일들을 내려받아 설치할 수 있습니다. 우선 현재 시점으로 www.Django-3.0.6-py3-none-any.whl 버전을 설치하려고 하는데 아래와 같이 관련 패키지들을 추가 설치했습니다. 1. www.pytz-2020.1-py2.py3-none-any.whl 2. www.sqlparse-0.3.1-py2.py3-none-any.whl 3. www.asgiref-3.2.7-py2.py3-none-any.whl 한 폴더에 whl 파일들을 넣고 pip install xxx.whl 을 실행해주면 관련 패키지들이 설치됩니다. 그리고 최종적으로 Django 패키지를 설치하면 됩니다. 2020. 5. 7.
반응형