Sfoglia il codice sorgente

feat: about_me界面可插入静态页面

SongZihuan 3 anni fa
parent
commit
e898285119

+ 3 - 2
app/about_me.py

@@ -1,4 +1,4 @@
-from flask import Blueprint, render_template
+from flask import Blueprint, render_template, current_app
 import app
 
 about_me = Blueprint("about_me", __name__)
@@ -7,7 +7,8 @@ about_me = Blueprint("about_me", __name__)
 @about_me.route('/')
 def about_me_page():
     app.HBlogFlask.print_load_page_log("about me")
-    return render_template("about_me/about_me.html")
+    hblog: app.Hblog = current_app
+    return render_template("about_me/about_me.html", about_me=hblog.about_me)
 
 
 @about_me.context_processor

+ 9 - 1
app/app.py

@@ -1,4 +1,4 @@
-import os.path
+import os
 import sys
 
 from flask import Flask, url_for, request, current_app, g, render_template
@@ -10,6 +10,8 @@ from typing import Optional, Union
 
 import logging.handlers
 import logging
+from bs4 import BeautifulSoup
+
 from configure import conf
 from object.user import AnonymousUser, load_user_by_email
 
@@ -25,6 +27,7 @@ from .about_me import about_me
 class HBlogFlask(Flask):
     def __init__(self, import_name: str, *args, **kwargs):
         super(HBlogFlask, self).__init__(import_name, *args, **kwargs)
+        self.about_me = ""
         self.update_configure()
 
         self.register_blueprint(index, url_prefix="/")
@@ -70,6 +73,11 @@ class HBlogFlask(Flask):
 
     def update_configure(self):
         self.config.update(conf)
+        about_me_page = conf["ABOUT_ME_PAGE"]
+        if len(about_me_page) > 0 and os.path.exists(about_me_page):
+            with open(about_me_page, "r", encoding='utf-8') as f:
+                bs = BeautifulSoup(f.read(), "html.parser")
+            self.about_me = str(bs.find("body").find("div", class_="about-me"))
 
     @staticmethod
     def get_max_page(count: int, count_page: int):

+ 15 - 15
configure/__init__.py

@@ -7,8 +7,7 @@ conf = {
     "BLOG_NAME": "HBlog",
     "BLOG_DESCRIBE": "Huan Blog.",
     "FOOT": "Power by HBlog",
-    "ABOUT_ME_NAME": "",
-    "ABOUT_ME_DESCRIBE": "",
+    "ABOUT_ME_PAGE": "",
     "INTRODUCTION": "",
     "INTRODUCTION_LINK": "",
     "MYSQL_URL": "localhost",
@@ -42,17 +41,18 @@ def configure(conf_file: str, encoding="utf-8"):
     with open(conf_file, mode="r", encoding=encoding) as f:
         json_str = f.read()
         conf.update(json.loads(json_str))
+    if type(conf["LOG_LEVEL"]) is str:
+        conf["LOG_LEVEL"] = {"debug": logging.DEBUG,
+                             "info": logging.INFO,
+                             "warning": logging.WARNING,
+                             "error": logging.ERROR}.get(conf["LOG_LEVEL"])
 
-        if type(conf["LOG_LEVEL"]) is str:
-            conf["LOG_LEVEL"] = {"debug": logging.DEBUG,
-                                 "info": logging.INFO,
-                                 "warning": logging.WARNING,
-                                 "error": logging.ERROR}.get(conf["LOG_LEVEL"])
-
-        introduce = conf["INTRODUCE"]
-        introduce_list = []
-        for i in introduce:
-            describe: str = introduce[i]
-            describe = " ".join([f"<p>{i}</p>" for i in describe.split('\n')])
-            introduce_list.append((i, describe))
-        conf["INTRODUCE"] = introduce_list
+    introduce = conf["INTRODUCE"]
+    introduce_list = []
+    for i in introduce:
+        describe: str = introduce[i]
+        describe = " ".join([f"<p>{i}</p>" for i in describe.split('\n')])
+        introduce_list.append((i, describe))
+    conf["INTRODUCE"] = introduce_list
+    if len(conf["LOG_HOME"]) > 0:
+        os.makedirs(conf["LOG_HOME"], exist_ok=True)

BIN
requirements.txt


+ 0 - 0
static/styles/about_me/about_me.css


+ 2 - 55
templates/about_me/about_me.html

@@ -4,66 +4,13 @@
 
 {% block style %}
     {{ super() }}
-    <link href="{{ url_for('static', filename='styles/about_me/about_me.css') }}" rel="stylesheet">
 {% endblock %}
 
 {% block context %}
     <section id="base" class="container mt-3">
     <div class="row">
-        <div class="col-12 col-lg-6">
-            <div class="card mr-lg-2 mb-3">
-                <div class="card-header"> 关于我 </div>
-                <div class="card-body">
-                    <h4 class="card-title"> {{ conf['ABOUT_ME_NAME'] }} </h4>
-                    <h5 class="card-subtitle"> 博主 </h5>
-                    <p class="card-text"> {{ conf['ABOUT_ME_DESCRIBE'] }} </p>
-
-
-                    {% for link in conf['DESCRIBE_LINK'] %}
-                        <a class="card-link" href="{{ conf['DESCRIBE_LINK'][link] }}"> {{ link }} </a>
-                    {% endfor %}
-                </div>
-            </div>
-
-            <div class="card mr-lg-2 mb-3 mb-lg-0">
-                <div class="card-header"> 项目 </div>
-                <div class="card-body">
-                    {% for p in conf["about-me-project"] %}
-                        <h4 class="card-title"> {{ p }}-项目 </h4>
-                        <ul>
-                            {% for i in conf["about-me-project"][p] %}
-                                <li class="card-text"> {{ i }} </li>
-                            {% endfor %}
-                        </ul>
-                    {% endfor %}
-                </div>
-            </div>
-        </div>
-
-        <div class="col-12 col-lg-6">
-            <div class="card ml-lg-2 mb-3">
-                <div class="card-header"> 技术栈 </div>
-                <div class="card-body">
-                    {% for p in conf["about-me-skill"] %}
-                        <h4 class="card-title"> {{ p }}-项目 </h4>
-                        <ul>
-                            {% for i in conf["about-me-skill"][p] %}
-                                <li class="card-text"> {{ i }} </li>
-                            {% endfor %}
-                        </ul>
-                    {% endfor %}
-                </div>
-            </div>
-            <div class="card ml-lg-2">
-                <div class="card-header"> 阅读栈 </div>
-                <div class="card-body">
-                    <ul>
-                        {% for i in conf["about-me-read"] %}
-                            <li class="card-text"> 《{{ i }}》 </li>
-                        {% endfor %}
-                    </ul>
-                </div>
-            </div>
+        <div class="col-12 col-lg-6 offset-lg-3">
+            {{ about_me | safe }}
         </div>
     </div>
     </section>