$ source .venv/Scripts/activate : 가상환경 활성화 명령어
$ pip list : 사용중인 lib list
$ pip freeze > requirements.txt : 사용중인 lib 'requirements.txt' 으로 .txt 파일로 목록 생성
form 을 통한 데이터 전송
- submit 이 일어나면 music_create() 함수 실행, 이때 데이터를 get 방식으로 전송
<form action=" {{url_for('music_create')}}" method="get">- 사용자 입력 데이터 전송시 데이터 전송 이름을 username 으로 전송한다
<input type="text" name="username">
# db 기본 코드 app.py 추가(db와 연결)
import os
from flask_sqlalchemy import SQLAlchemy
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] =\
'sqlite:///' + os.path.join(basedir, 'database.db')
db = SQLAlchemy(app)
class Song(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(100), nullable=False)
artist = db.Column(db.String(100), nullable=False)
title = db.Column(db.String(100), nullable=False)
image_url = db.Column(db.String(10000), nullable=False)
def __repr__(self):
return f'{self.username} {self.title} 추천 by {self.username}'
with app.app_context():
db.create_all()
#form 에서 넘겨준 데이터 db에 저장
@app.route("/music/create/")
def music_create():
# form에서 보낸 데이터 받아오기(사용자 입력 데이터)
username = request.args.get("username")
title = request.args.get("title")
artist = request.args.get("artist")
image = request.args.get("image")
# 데이터 db에 저장하기
# db에 저장하기 위해 객체로 저장
song = Song(username = username, title = title, artist = artist, image_url = image )
# db 세션에 저장
db.session.add(song)
# db에 완전 commit
db.session.commit()
return render_template('music.html')
# db에 저장된 데이터 불러오기
@app.route("/music")
def music():
# db에 있는 모든 데이터 song_list에 저장
song_list = Song.query.all()
return render_template('music.html', data = song_list)
# app.py
# serch(조건을 줘서)데이터 가져오기
@app.route("/music/<username>/")
def render_music_filter(username):
# username 서치하여 list 가져오기
filter_list = Song.query.filter_by(username=username).all()
return render_template('music.html', data = filter_list)
@app.route("/music/create/")
def music_create():
...
# return render_template('music.html')
# 음악 추가 후 추천인이 추가한 것만 보이도록 페이지 redirect 할 수 있도록 변경
# 데이터 추가 후 redirect 해준다 render_music_filter로 username을 가지고
return redirect(url_for('render_music_filter', username = username))
Pythonanywhere 회원가입 : https://www.pythonanywhere.com/
1. Open Web tab 클릭
2. Add a new Web app 클릭
3. 사용하는 web framwork 선택
4. Python 버전 선택
5. project.zip 파일 업로드
project.zip / lib_list, app.py, db, templates 압축한 파일
6. consol 창에서 파일 압축 해제 및 가상환경설정
03:15 ~/mysite $ ls #파일 목록 확인 Project.zip __pycache__ flask_app.py 03:17 ~/mysite $ unzip Project.zip #파일 압축 풀기 Archive: Project.zip inflating: app.py inflating: database.db inflating: requirements.txt creating: templates/ inflating: templates/motto.html inflating: templates/music.html 03:18 ~/mysite $ ls #압축해제 확인 Project.zip __pycache__ app.py database.db flask_app.py requirements.txt templates03:18 ~/mysite $ python -m venv venv #python 가상환경 생성 03:20 ~/mysite $ source venv/bin/activate #가상환경 활성화 (venv) 03:20 ~/mysite $ pip install -r requirements.txt #목록에 있는 lib 설치
7. web-Virtualenv: 경로 설정
og 태그 설정
<!--motto.html head 끝부분 추가--> <meta property="og:title" content="내 사이트의 제목" /> <meta property="og:description" content="보고 있는 페이지의 내용 요약" /> <meta property="og:image" content="이미지URL" /> </head>적용후 링크 보냈는데 반영 안된다면 공유디버거 들어가서 캐시 초기화 해주면 됨.
https://developers.kakao.com/tool/debugger/sharing전, 후 사진
배포 완료 된 사이트
https://rami.pythonanywhere.com/