flask 사용자 로그 인 모듈 + 사용자 프로필 사진 설정 (간단 한 코드 논리)
9849 단어 Flask
사용자 로그 인, 패턴 이 다양 합 니 다. 그 중의 핵심 코드 논 리 를 파악 하기 만 하면 됩 니 다.적합 한 기능 코드 를 쓸 수 있 습 니 다.방향 이 정확 하고 길 은 같 으 며 길 은 로마 로 통한다.
다음은 참고 만 제공 합 니 다. 도 무상 도, 법 무상 법, 세 무정 세, 물 무상 형, 군 자 는 시 세 를 잘 살 펴 보면 그 법 을 얻 을 수 있 습 니 다.
사용자 로그 인 모듈
사용자 로그 인
1. ,get_json()
2.
3. json ,mobile password
4.
5.
6. , ,
7. : check_password_hash()
8. :( )
session['name'] = mobile
session['name'] = user.name
9.
코드
# coding=utf-8
#
from . import api
# flask
from flask import request,jsonify,current_app,session,g
#
from ihome.utils.response_code import RET
#
from ihome.models import User
#
from ihome.utils.commons import login_required
#
from ihome import db,constants
#
from ihome.utils.image_storage import storage
#
import re
@api.route('/sessions',methods=['POST'])
def login():
# post
user_data = request.get_json()
#
if not user_data:
return jsonify(errno=RET.PARAMERR,errmsg=' ')
# ,mobile,password
mobile = user_data.get('mobile')
password = user_data.get('password')
#
if not all([mobile,password]):
return jsonify(errno=RET.PARAMERR,errmsg=' ')
#
if not re.match(r'1[3456789]\d{9}',mobile):
return jsonify(errno=RET.PARAMERR,errmsg=' ')
# , ,
try:
user = User.query.filter_by(mobile=mobile).first()
except Exception as e:
current_app.logger.error(e)
return jsonify(errno=RET.DBERR,errmsg=' ')
# , /
if user is None or not user.check_password(password):
return jsonify(errno=RET.DATAERR,errmsg=' ')
#
"""
:
def login_required():
user_id = session.get('user_id')
if user_id:
g.user_id = user_id
else:
return jsonify(errno=RET.SESSIONERR,errmsg=' ')
"""
session['user_id'] = user.id
session['mobile'] = mobile
# ,
session['name'] = user.name
#
return jsonify(errno=RET.OK,errmsg='OK',data={'user_id':user.id})
사용자 정보 가 져 오기
1. user_id = g.user_id
2.
:user = User.query.get(user_id)
:user = User.query.filter_by(id=user_id).first()
3.
4. , to_dict()
코드
@api.route('/user',methods=['GET'])
@login_required
def get_user_profile():
# id
user_id = g.user_id
# mysql
try:
user = User.query.filter_by(id=user_id).first()
except Exception as e:
current_app.logger.error(e)
return jsonify(errno=RET.DBERR,errmsg=' ')
#
if not user:
return jsonify(errno=RET.NODATA,errmsg=' ')
#
return jsonify(errno=RET.OK,errmsg='OK',data=user.to_dict())
사용자 프로필 사진 설정
1.
2. , request.files.get()
3. ()
4. ,
5. ,
6. ,
7.
8.
코드
@api.route('/user/avatar',methods=['POST'])
@login_required
def set_user_avatar():
# id
user_id = g.user_id
#
avatar = request.files.get('avatar')
# , bytes
avatar_data = avatar.read()
# ,
try:
image_name = storage(avatar_data)
except Exception as e:
current_app.logger.error(e)
return jsonify(errno=RET.THIRDERR,errmsg=' ')
# mysql
# db.session.add(user)
# update
try:
# update()
User.query.filter_by(id=user_id).update({'avatar_url':image_name})
db.session.commit()
except Exception as e:
current_app.logger.error(e)
db.session.rollback()
return jsonify(errno=RET.DBERR,errmsg=' ')
#
image_url = constants.QINIU_DOMIN_PREFIX + image_name
#
return jsonify(errno=RET.OK,errmsg='OK',data={"avatar_url":image_url})
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GCE로 Flask를 이동!GCE에서 우선 Flask를 사용하여 웹 페이지를 게시하는 단계입니다. 우선이므로, 움직이면 좋다고 하는 느낌입니다. 우선 공개하므로 최소 사양으로 갑니다. 다음 구성으로 인스턴스를 만듭니다. 이름 gce-flask...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.