python – Avatar-Problem des Flasky-Projekts von
某草草
某草草 2017-06-12 09:22:28
0
1
844

Wie ändere ich zu einem benutzerdefinierten lokalen Avatar? Gibt es einen implementierten Code? Bitte geben Sie mir einen Link. Danke

Lokale Bildadresse: ./static/avatar/1.jpg-9.jpg

Mein Code sieht so aus:

def gravatar(self, size=100, default='identicon', rating='g'): import random return '%d.jpg' % random.randint(1, 9)

Der Aufruf sieht so aus:

;

Das Bild kann nicht geladen werden, nachdem ich es auf diese Weise geändert habe.

某草草
某草草

Antworte allen (1)
女神的闺蜜爱上我

欢迎交流, 也在学 Flask, 不过我没用书上 gavatar 的例子, 所以我也不太知道你的问题出在哪里...

关于本地头像, 我这边有个自己写的半成品供参考, 实现了 ajax 异步上传头像到服务器.User模型里添加了一个avatar字段, 存放头像路由相应的 url 路径, 通过访问头像路由得到头像文件. 上传的头像根据用户idAVATARS_PER_FOLDER个头像文件存放在/static/img/avatr/n/中, 文件名是u{id}.jpg.

时间关系我解释的不太详细, 欢迎交流~


backend 蓝图 -app/backend/views.py:

处理头像上传和返回头像

@backend.route("/avatar/", methods=["GET", "POST"]) def avatar(id): # 设置头像存储路径 avatar_folder = current_app.config["UPLOAD_FOLDER"] + "avatar/" # 按照 id 计算头像存储位置 r = id // current_app.config["AVATARS_PER_FOLDER"] save_location = avatar_folder + str(r) # jpg filename = "u{}.jpg".format(id) # 处理头像上传 # TODO: CSRF 保护 if request.method == "POST" and request.is_xhr: # base64 -> img img_b64 = request.form.get("img") img_b64 = re.sub(r"data:image/.+;base64,", "", img_b64) img = Image.open(BytesIO(base64.b64decode(img_b64))) # 保存文件 if not os.path.exists(save_location): os.mkdir(save_location) img.save(os.path.join(save_location, filename)) # 更新数据库 u = User.query.get_or_404(id) u.avatar = url_for("backend.avatar", id=id) db.session.add(u) # 返回响应 return jsonify(result="success") return send_from_directory(save_location, filename)

html 页面 -app/templates/user_settings.html:

通过 ajax 处理头像上传和更新显示

头像

这里使用 localResizeIMG 插件来压缩图像, 得到图像的 base64 编码, 传入upload_avatar()函数异步上传, 如果上传成功, 更新头像显示

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!