Notice
Recent Posts
Recent Comments
Link
TanzDev
TIL 11 (웹개발 강의 5주차 완강) 본문
웹개발 강좌가 드디어 끝났다.
튜터분은 한번 이런게 있나 알아보고 지나가라고했지만 나에게는 오류가 많이 생겼다
# 필수 라이브러리
'''
0. Flask : 웹서버를 시작할 수 있는 기능. app이라는 이름으로 플라스크를 시작한다
1. render_template : html파일을 가져와서 보여준다
'''
from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)
# 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()
@app.route("/")
def home():
name = 'TANZ'
motto = "행복해서 웃는게 아니라 웃어서 행복합니다."
context = {
"name": name,
"motto": motto,
}
return render_template('motto.html', data=context)
@app.route("/music/")
def music():
song_list = Song.query.all() #데이터베이스에 있는 모든 음악데이터가 송 리스트에 담기게됨.
return render_template('music.html', data=song_list)
@app.route("/music/<username>/") #유저네임을 꺽새가로를 넣어 사용하면 데이터화하여 사용할수있다.
def render_music_filter(username):
filter_list = Song.query.filter_by(username=username).all()
song_list = Song.query.all() #데이터베이스에 있는 모든 음악데이터가 송 리스트에 담기게됨.
return render_template('music.html', data=filter_list)
@app.route("/iloveyou/<name>/")
def iloveyou(name):
motto = f"{name}야 난 너뿐이야!"
context = {
'name': name,
'motto': motto,
}
return render_template('motto.html', data=context)
@app.route("/music/create/")
def music_create():
#form에서 보낸 데이터 받아오기
username_receive = request.args.get("username")
title_receive = request.args.get("title")
artist_receive = request.args.get("artist")
image_receive = request.args.get("image_url")
# 데이터를 DB에 저장하기
song = Song(username=username_receive, title=title_receive, artist=artist_receive, image_url=image_receive)
db.session.add(song)
db.session.commit()
return redirect(url_for('render_music_filter', username=username_receive))
# redirect는 페이지 이동을 시켜줌 -> render_music_filter 기준으로 음악페이지로 이동해줌
if __name__ == "__main__":
app.run(debug=True)
이번에 진행한 5주차 숙제 app.py다
주석으로 표기해두고 추후에 복습할때 다시 참고해봐야겠다.
※ 어떤 문제가 있었는지
- pythonanywhere 사이트에 내 홈페이지가 에러나는 상황이 발견됨
※ 내가 시도해본 것들
- chatgpt한테 물어보고, 튜터에게 질문도 했다.
※ 어떻게 해결했는지
- 튜터님과 2시간동안 대화 후 해결점을 찾게되었다.
※ 무엇을 새롭게 알았는지
- chatgpt를 통해 알수없는것도 생기는 부분이 중요하다 느꼈다. 개발자의 기준으로써 실무와 이론의 한계를 명확하게 느낀 하루가 된것같다. 정확한 오류원인은 Templates를 소문자로만 templates로 써야하는 부분이었는데
chatgpt의 경우엔 서버명령어를 바꿔봐라, 콘솔에 들어가서 명령어를 써봐라 였지만 모든게 헛수고였다.
튜터님이랑 두시간동안 풀면서 숨은그림찾기를 하듯이 templates를 찾아 변경함으로써 고된 숙제가 끝나게 되었다
'기록보드 > TIL' 카테고리의 다른 글
TIL 13 (미니프로젝트) (1) | 2024.02.13 |
---|---|
TIL 12 ( 복습 및 웹개발 공부 ) (1) | 2024.02.12 |
TIL 10 (멜론차트 크롤링 및 웹개발 5주차 입성) (1) | 2024.02.11 |
TIL 9 ( 로또 번호 추출기 작성) (0) | 2024.02.10 |
TIL 8 (파이썬 기초문법 ~ 날씨 웹 크롤링) (2) | 2024.02.07 |