플라스크 웹 개발 책은 기본적으로 끝났고 나중에 다시 봐야 하는데 제가 만든 블로그가 늘 좀 투박한 느낌이라 머리를 써서 새로운 기능을 개발하고 있어요
오늘은 가장 기본적인 기능을 생각했어요 , 맞춤형 아바타
이러한 기능은 두 가지 기본 기능 블록으로 설계되었습니다
1: 파일을 업로드하고 저장하는 방법
2: 사용자 모델에서 아바타 사진과 사용자를 연결하는 방법
온라인에서 확인한 두 번째 질문 토론 후 , 우리는 기본적으로 두 가지 방법을 생각해 냈습니다. 첫 번째는 이미지를 바이너리로 변환한 다음 이를 데이터베이스에 저장하는 것입니다. 두 번째는 이미지를 파일 시스템에 직접 저장하는 것입니다. 오랫동안 파일만 업로드한다고 생각했는데, 데이터베이스가 이 경로를 저장한 다음 이를 프런트 엔드에 표시합니다.
데이터베이스 설정은 다음과 같습니다
user_image=db.Column(db.String(252),nullable=True)
폼 폼 디자인:
avatar=FileField('头像')백엔드 구현 코드
avatar=request.files['avatar'] fanme=avatar.filename upfile=os.getcwd()+('/app/static/avatar/') ALLOWER_EXIT=['pang','jpg','jpeg','jig'] flag='.' in fanme and fanme.split('.')[1] in ALLOWER_EXITif not flag: return render_template('editperson.html',form=form) avatar.save('{}{}{}'.format(upfile,user.username,fanme)) user.user_image='/static/avatar/{}{}'.format(user.username,fanme) db.session.add(user)저장 경로는
/static/avatar/,支持格式 pang、jpg、jpeg等格式,这个可以根据自己的需求进行设置。 存储后会在数据库存储一个路径 最后实现后数据库
앞쪽- end display
{% if username.user_image%}<img src="{{username.user_image}}" style="height:80px;">{%else%}<img src="/static/img/0.jpg" style="height:70px;width:80px">{%endif%}
설명하자면 여기 백엔드에 아바타를 업로드하는 코드가 Windows에서 파일이 존재하지 않는다고 오류를 보고하는데 수정하려고 했는데 경로명이 너무 길어서는 안 됩니다.
짧은 경로 이름도 괜찮지만, 긴 이름도 괜찮습니다. 오류를 신고하세요. 윈도우 개발에는 단점이 많지만 우분투에서 구현하는데 문제는 없습니다위 내용은 플라스크에 아바타 업로드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!