객관적으로 판단해보자면 내가 지금 잘 해낼 수 있는건 POST로 data를 DB에 저장하기 정도.
하지만 그걸 GET으로 불러와 .append 하면 안나온다. 스스로 고쳐보려고 했는데 잘 안되길래 그냥 첨부터 다시보자!로 마음먹음.
그래서 오늘(토요일)은 이 부분에 대해 탐구해보고자 강의를 돌려보면서 내가 어떤 부분을 놓쳤는지 확인하고, 바로 잡아 보고자 한다. *onclick하면 ajax 실행되게하는거 잊지 좀 말자!
또 다른 오늘(일요일)은 기능구현 중심으로 봐보자. 특히 4주차는 반복해서 들어 볼 것!
app.py
@app.route('/diary', methods=['GET'])
def show_diary():
sample_receive = request.args.get('sample_give')
print(sample_receive) <- 클라이언트한테 받을 데이터없어서
위에 두줄은 삭제하고 find로!
return jsonify({'msg': 'GET 연결 완료!'})
이거왜...list(db.articles.fine 아니지? get 연결확인 후 바꿈
index.html
$(document).ready(function () {
listing()
}) <- 이걸 해줘야 클라이언트에서 GET으로 받아온 data를 부를 수 있다.
function listing () {
$.ajax({
type: "GET",
url: "/diary?sample_give=샘플데이터", <-이 ?뒤도 지우게됨
data: {},
success: function(response){
alert(response['msg'])
}
})
}
?sample_give의 샘플데이터 가 request.args.get('sample_give') 여기로 쏘옥 들어감.
response -> 'msg' 로 출력, response['msg'] -> 'GET 연결 완료!'로 출력.
return jsonify({'all_diary': diaries}) 일 때,
html파일에선, alert 대신 let diaries = response['all_diary'] 하면 diaries 값이 출력된다
app.py
@app.route('/diary', methods=['POST'])
def save_diary():
sample_receive = request.form['sample_give']
print(sample_receive)
return jsonify({'msg': 'POST 요청 완료!'})
index.html
function posting() {
//let title = $('#post-title').val()
//let content = $('#post-content').val()
$.ajax({
type: "POST",
url: "/diary",
data: { sample_give:'샘플데이터' },
success: function(response){
alert(response['msg'])
window.location.reload() <- 새로고침!
}
})
}
1-11강
이미지 첨부시 파일 이름 placeholder 자리에 들어가게 하는거 1-11 강 4분대부터.
1-12강
서버쪽에서 파일 받을 때 12강 0분대 / 1분대에는 form-data 코드 추가되는 거!
app.py 파일을 저장이니까 POST쪽에 추가
file = request.files["file_give"]
save_to = 'static/mypicture.jpg'
file.save(save_to)
이미지 저장시 기억하자.
let file = $('#file')[0].files[0]
let form_data = new FormData()
form_data.append("file_give", file)
form_data.append("title_give", title)
form_data.append("content_give", content)
$.ajax({
type: "POST",
url: "/diary",
data: form_data, <-
cache: false, <-
contentType: false, <-
processData: false, <-
name = '홍길동'
age = '30'
만약 내가 제 이름은 ㅇㅇㅇ이고 ㅁㅁ살입니다. 라고 하고 싶을 때,
hello = '제 이름은 '+name+'이구요'
print(hello)를 하는데, +로 연결하는게 귀찮음, 그래서hello = f'제 이름은 {name}입니다. 나이는 {age}입니다'
print(hello) 하면
제 이름은 홍길동입니다. 나이는 30입니다. 라고 잘 나옴
파이썬에 원래 있는 함수
from datetime import datetime
today = datetime.now()
print(today) 하면 지금 시간 나옴!
mytime = today.strftime('%Y-%m-%d-%H-%M-%S')
print(mytime) 하면2022-05-07-22-08-02
이렇게 이쁘게 나오게됨
파일 이름에 응용!
filename = f'file-{mytime}'
static에 저장할 때,
file = request.files['file_give']
extension = file.filename.split('.')[-1]
today = datetime.now()
myname = today.strtime('%Y년 %m월 %d일)filename = f'file-{myname}
save_to = f'static/{filename}.{extension}
file.save(save_to)
이렇게 해주면 file-2022년-5월-8일.{확장자 명}이 들어가 이 파일명으로 DB에 저장이 된다.
doc에는 'file': f'static/{filename}.{extension} 을 추가해준다.
그럼 DB에 file 이라는 테이블 네임으로 파일명이 잘 들어가 있는 걸 볼 수 있다.
word_receive = request.args.get('word_give')
를 넣어 받아준다.
print(word_receive)
return render_template('detail.hrml',rows=roews, word=word_receive)
해주면, 클라이언트언트에
<h3>받은 단어는 {{ word }}</h3>
를 입력하고 주소창에 localhost:5000/detail?word_give=hi치면
브라우저에
주소창에 localhost:5000/detail?word_give=hello 치면
브라우저에
가 찍히게 된다.
2-3강 21분대부터 주소의 일부를 변수처럼 사용할 수 있는 방법 /detail/< keyword > + return render_template(word=keyword)
그 후엔 /detail/hi 하면
2-4강 4:30대 부터 API에서 f ' http:// dddddddd/{keyword} '
2-4강 6:20대 부터 http 요청 header값 설정하는 방법
http 요청 header값 설정하는 방법
2-7강 0분대 부터 배경앤 배너 넣기 / 4분대부터 배너 css 설정 해석
2-8강 1부 30초대부터 jinja로 script 태그 제일 첫줄에 let word = '{{ word }}' 이렇게 해놓으면 ${word}를 갖다 쓸 수 있게된다.(단, ${} 쓰게되면 그 부분은 ''도 ``(백틱)으로 바꿔줘야한다!
2-10 status가 new/old에 따라서 하나의 버튼만 보이게 하기.
staus_receive = request.args.get('status_give')
추가해주고 버튼 태그 쪽 if status=='new'로 if문 써서 돌려주고
브라우저에가서 localhost:5000/detail/hello?status_give=old 하면 삭제버튼이 나타나고, =new 일땐 저장버튼만 보이게된다
if r.status_code != 200:
return redirect("/")
or
return edirect(url_for("main"))
검색창에 aaaaa같은 단어가 아닌 찾을 수 없는 값을 입력하면, 입력값을 제대로 내려주지 못해서 저런 에러가 난다. status코드가 200이 아니어서 저런 현상이 나타나는데,
따라서 위에처럼 적어주면 redirect 함수를 이용해 200이 아닌 거는 그냥 메인페이지로 보내줘라! 라고 설정할 수 있다.
아니 첫 번째 짤ㅋㅋㅋㅋㅋㅋㅋㅋ너무 웃기고..귀엽고....무슨 심정이신지 공감되고...ㅋㅋㅋㅋ 넘나 적절한 짤이네유 아직은 조금 부족할지라도 요렇게나 열심히 노력하는 성언님 너무 멋져요 타고난 놈은 노력하는 놈을 절대 이길 수 없답니다!!! 끝까지 화이팅이에요 성언님 항상 응원합니당 <3