python小项目我的博客

万字超详细python基础解析 文章目录1 Python简介2 Python编码3 python模块安装之pip4 python的缩进规则5 标识符5.1 关键字6 转义字符7 注释7.1 单行注释7.2 多行注释8 输出函数8.1 格式化输出8.2 精度和宽度控制8.3 转换标志8.4 格式字符归纳控制输出字体样色9 输入函数10 变量与常量11 数据类型11.1 数据类型转换12 python运算符12.1 算术运算符的优先级12.2 对象的布尔值13 选择结构13.1 条件表达式13.2 pass语句14 循环结构14.1 rang 阅读详情

我的博客小项目

又花了一阵时间重新组织了一下我的博客这个小项目,将原来的单文件编程扩展到了多文件编程,将逻辑层、显示层、数据层、进行了分离,同时加入了日志功能,数据写入文件。待完善(文章写入文件,后续会改造项目使用面对对象封装数据,将用户和文章分别封装,然后使用网络构造服务器,数据存入mysql数据库)。

本系统主要包括了用户模块和文章模块,用户模块包含了用户注册、用户登陆、维护个人信息、修改密码等几个小模块,文章模块包含了两个小模块,查看所有用户的文章,维护自己的文章。

系统涉及知识点:字典、元组、列表、字符串的使用,用字典封装跳转菜单,数据、视图与逻辑的分离,面向过程编程。

部分调试截图

用户登陆选择界面

用户登陆选择界面

博客主页

博客主页

我的文章管理

维护个人资料

查看个人信息

修改个人信息

 

系统源码:

blog模块

"""我的博客
author:
version:v1.0.0
"""
import menu
import service


def engin():
    """程序引擎"""
    # 展示登陆界面
    menu.show_login()


# 处理流程
def main():
    """程序入口"""
    service.record("程序启动\n")
    engin()


# 主程序入口
if __name__ == "__main__":
    main()

 

data模块

"""数据存储"""
import os
import json


# 获取用户列表
def get_users():
    """连接数据库,获取用户列表"""

    # 若文件存在打开文件
    if os.path.isfile("files/users.json"):
        with open("files/users.json", "r", encoding="utf-8") as f:
            users = json.loads(f.read())
            return users
    else:
        return False


# 更新用户列表
def update_users():
    # 将用户列表写入文件
    if os.path.isfile("files/users.json"):
        with open("files/users.json", "w", encoding="utf-8") as f:
            f.write(json.dumps(users, ensure_ascii=False))
            return True
    else:
        return False


# 更新在线用户列表
def update_online_users():
    # 将用户列表写入文件

    if os.path.isfile("files/online_users.json"):
        with open("files/online_users.json", "w", encoding="utf-8") as f:
            f.write(json.dumps(online_users, ensure_ascii=False))
            return True
    else:
        return False


# 所有用户字典
users = get_users()
# 所有在线用户字典
online_users = get_users()
# 所有的文章字典
all_articles = dict()



def main():
    """程序入口"""
    users = get_users()
    # 测试将用户账号为1的密码改为"2"
    # users.get("1")["password"] = "2"
    update_users(users)


if __name__ == '__main__':
    main()

 

menu模块

"""
菜单界面跳转
author:
version:v1.0.0
"""
import os
import sys
import time
import service


# 用户登陆选择界面
def show_login():
    """用户登陆选择界面"""
    os.system("cls")
    print("","*"*45, "\n\t\t我的博客登陆界面\n", "*"*45)
    print("\t\t1. 用户登陆\n\t\t2. 用户注册\n\t\t3. 退出系统\n", "*"*45)

    # 程序进入用户登陆界面
    service.record("用户进入登陆选择界面")

    # 用户选择跳转
    choice = input("请输入您的选择:")
    service.record("用户输入选择%s" % choice)

    return login_menu_dict.get(choice)() if choice in login_menu_dict else show_login()


# 用户登陆界面
def login():
    """用户登陆界面"""
    os.system("cls")
    print("","\n\t\t欢迎您的登陆\n", "*"*45)
    service.record("用户进入用户登陆界面")
    # 验证成功,展示主页
    if service.login():
        service.record("验证成功进入主页")
        show_index()
    # 验证失败,返回登陆界面
    else:
        service.record("验证失败")
        show_login()


# 用户注册界面
def register():
    """用户注册界面"""
    os.system("cls")
    print("","\n\t\t欢迎您前来注册\n", "*"*45)
    service.record("用户进入注册界面")
    # 调用注册
    service.register()
    # 展示登陆界面
    show_login()


# 我的博客主页
def show_index():
    """我的博客主页"""
    os.system("cls")
    print("","*"*45, "\n\t\t我的博客主页\n","*"*45)
    print("\t\t1. 查看所有文章\n\t\t2. 我的文章管理\n\t\t3. 维护个人资料")
    print("\t\t4. 返回上一级\n\t\t5. 退出系统\n", "*"*45)
    service.record("用户进入我的主页界面")
    # 用户选择跳转
    choice = input("请输入您的选择:")
    service.record("用户输入%s" % choice)
    # 执行跳转菜单
    return index_menu_dict.get(choice)() if choice in index_menu_dict else show_index()


# 查看所有文章
def look_all_articles():
    """查看所有文章"""
    service.record("用户进入查看所有文章界面")
    os.system("cls")
    print("", "\n\t\t查看所有文章\n", "*" * 45)

    # 显示所有未删除的文章
    print("编号\t标题\t\t作者\t浏览次数\t\t发布时间")
    for article in service.my_articles:
        # 若文章为删除
        if not article.get("is_del"):
            # 构建显示文章
            show_article = (article.get("no"), article.get("title"), article.get("author").get("username"),
                            article.get("read_count"), article.get("time"))
            print("%s\t%s\t\t%s\t%s\t\t%s" % show_article)

    # 用户输入选择
    print("\n1.查看文章 2.返回上一级 3.退出系统")
    choice = input("请输入您的选择:")
    service.record("用户输入选择%s" % choice)

    # 跳转菜单
    return look_all_articles_menu_dict.get(choice)() if choice in look_all_articles_menu_dict else look_all_articles()


# 我的文章管理
def show_manager_my_articles():
    """我的文章管理"""
    os.system("cls")
    print("", "*"*45, "\n\t\t管理我的文章\n", "*"*45)
    print("\t\t1. 查看我的所有文章\n\t\t2. 发表文章\n\t\t3. 回收站\n\t\t4. 返回上一级\n\t\t5. 退出系统\n", "*"*45)
    service.record("用户进入我的文章管理界面")
    # 用户选择跳转
    choice = input("请输入您的选择:")
    service.record("用户输入选择%s" % choice)
    # 跳转菜单
    return manager_my_articles_menu_dict.get(choice)() if choice in manager_my_articles_menu_dict else show_manager_my_articles()


# 查看我的所有文章
def look_my_articles():
    """查看我的所有文章"""
    service.record("用户进入查看我的所有文章界面")
    os.system("cls")
    print("", "\n\t\t查看我的所有文章\n", "*" * 45)

    # 显示我的文章
    print("编号\t标题\t\t作者\t浏览次数\t\t发布时间")
    for article in service.my_articles:
        # 若为自己的文章
        if article.get("author") == service.user and not article.get("is_del"):
            # 构建显示文章
            show_article = (article.get("no"), article.get("title"), article.get("author").get("username"),
                            article.get("read_count"), article.get("time"))
            print("%s\t%s\t\t%s\t%s\t\t%s" % show_article)

    # 用户输入选择
    print("\n1.查看文章 2.删除文章 3.返回上一级 4.退出系统")
    choice = input("请输入您的选择:")
    service.record("用户输入%s" % choice)

    # 跳转菜单
    return look_my_articles_menu_dict.get(choice)() if choice in look_my_articles_menu_dict else look_my_articles()


# 发表文章
def publish_article():
    """发表文章"""
    service.record("用户进入发表文章界面")
    os.system("cls")
    print("", "\n\t\t发表文章\n", "*" * 45)
    service.publish_article()


# 查看我的一篇文章
def look_article():
    """查看我的一篇文章"""
    service.record("用户查看我的文章界面")
    os.system("cls")
    print("", "*"*40,"\n文章内容\n","*"*40)
    service.look_article()


# 删除文章
def del_article():
    """删除我的文章"""
    service.record("用户删除文章界面")
    os.system("cls")
    print("", "\n\t\t删除我的文章\n", "*" * 45)
    service.del_article()


# 回收站
def recycle():
    """回收站"""
    service.record("用户进入回收站界面")
    os.system("cls")
    print("", "\n\t\t回收站\n", "*" * 45)

    # 显示我的文章
    print("编号\t标题\t\t作者\t\t浏览次数\t发布时间")
    for article in service.my_articles:
        # 若为自己的文章
        if article.get("is_del"):
            # 构建显示文章
            show_article = (article.get("no"), article.get("title"), article.get("content"),
                            article.get("read_count"), article.get("time"))
            print("%s\t%s\t\t%s\t%s\t%s" % show_article)

    choice = input("\n输入文章编号恢复文章,其他任意键返回")
    service.record("用户输入恢复文章的编号%s" % choice)
    for article in service.my_articles:

        if choice == str(article.get("no")) and article.get("is_del"):
            article["is_del"] = False
            service.record("恢复文章%s成功"% choice)
            input("恢复成功,按任意键继续!")
            return recycle()
    else:
        service.record("返回")
        input("文章不存在,按任意键继续!")
        return show_manager_my_articles()


# 维护个人信息
def show_manager_my_info():
    """维护个人信息"""
    service.record("用户进入维护个人信息界面")
    os.system("cls")
    print("","*"*45, "\n\t\t维护个人信息\n", "*"*45)
    print("\t\t1. 查看个人信息\n\t\t2. 修改个人信息\n\t\t3. 修改密码")
    print("\t\t4. 返回上一级\n\t\t5. 退出系统\n", "*"*45)

    # 用户选择跳转
    choice = input("请输入您的选择:")
    service.record("用户输入选择%s菜单跳转" % choice)

    # 跳转菜单
    return manager_my_info_menu_dict.get(choice)() if choice in manager_my_info_menu_dict else show_manager_my_info()


# 查看个人信息
def look_my_info():
    """查看个人信息"""
    service.record("用户进入查看个人信息界面")
    os.system("cls")
    print("", "\n\t\t查看我的信息界面\n", "*" * 45)
    show_info = (service.user.get("account"),service.user.get("username"), service.user.get("email"),
                 service.user.get("sex"), service.user.get("age"), service.user.get("phone"),
                 service.user.get("address"))
    print("\t\t账号:%s\n\t\t昵称:%s\n\t\t邮箱:%s\n\t\t性别:%s\n\t\t年龄:%s\n\t\t手机号码:%s\n\t\t地址:%s" % show_info)
    choice = input("\n按R键返回,其他任意键修改个人信息")
    service.record("用户输入%s" % choice)
    if choice.upper() =='R':
        service.record("返回上一级")
        return show_manager_my_info()
    else:
        service.record("修改个人信息")
        return update_my_info()


# 修改个人信息
def update_my_info():
    """修改个人信息"""
    service.record("用户进入修改个人信息界面")
    os.system("cls")
    print("", "\n\t\t修改个人信息界面\n", "*" * 45)
    print("\t1.修改昵称\n\t2.修改性别\n\t3.修改年龄\n\t4.修改手机号码\n\t5.修改地址\n\t6.返回上一级\n\t7.退出系统")

    choice = input("\n请输入您的选择:")
    service.record("用户输入%s跳转菜单" % choice)

    if choice in ["1", "2", "3", "4", "5"]:
        return service.update_my_info(choice)
    else:
        return update_my_info_menu_dict.get(choice)() if choice in update_my_info_menu_dict else update_my_info()


# 修改密码
def update_password():
    """修改密码"""
    service.record("用户进入修改密码界面")
    os.system("cls")
    print("", "\n\t\t修改密码界面\n", "*" * 45)
    return service.update_password()


def exit_system():
    """退出系统"""
    service.record("用户正常退出系统")
    for i in range(0,3):
        print("系统将在{}秒后退出".format(3-i))
        time.sleep(1)

    sys.exit(1)


# 用户登陆界面菜单,1登陆博客2.注册账号3.退出系统
login_menu_dict = {"1": login, "2": register, "3": exit_system}

# 主页菜单,1查看所有文章2.管理我的文章3.维护个人信息4.返回上一级5退出系统
index_menu_dict = {"1": look_all_articles, "2": show_manager_my_articles, "3": show_manager_my_info,
                   "4": show_login, "5": exit_system}

# 查看所有文章菜单,1.查看文章 2.返回上一级 3.退出系统
look_all_articles_menu_dict = {"1": look_article, "2": show_index, "3": exit_system}

# 管理我的文章菜单,1.查看我的所有文章,2.发表文章3.删除文章4。回收站5.返回上一级6.退出系统
manager_my_articles_menu_dict = {"1": look_my_articles, "2": publish_article, "3": recycle,
                                 "4": show_index, "5": exit_system}

# 维护个人信息菜单,1查看个人信息2.修改个人信息3.修改密码4.返回上一级5.退出系统
manager_my_info_menu_dict = {"1": look_my_info, "2": update_my_info, "3": update_password,
                             "4": show_index, "5": exit_system}

# 查看我的所有文章菜单,1查看文章 2.删除文章 3.返回上一级 4.退出系统
look_my_articles_menu_dict = {"1": look_article, "2": del_article, "3": show_manager_my_articles, "4": exit_system}

# 修改个人信息菜单
update_my_info_menu_dict = {"6": show_manager_my_info, "7": exit_system}



# 处理流程
def main():
    """程序入口"""
    show_login()
    # look_my_articles()


# 主程序入口
if __name__ == "__main__":
    main()

service模块

"""业务逻辑的处理"""
import data
import random
import menu
import datetime


# 用户登陆
def login():
    """用户登陆验证"""
    # 连接数据库获取用户列表
    users = data.get_users()
    in_account = input("请输入您的账号或邮箱:")
    record("用户输入账号或邮箱%s" % in_account)
    in_password = input("请输入您的密码:")
    record("用户输入密码%s" % in_password)

    # 遍历用户列表,获取用户字典
    for sql_user in users.values():
        # 用户输入的账号或email正在且密码正在,验证成功
        if (in_account == sql_user.get("account") or in_account == sql_user.get("email")) \
                and (in_password == sql_user.get("password")):

            # 如果在线用户不为空,将当前用户加入字典中
            if data.online_users:
                data.online_users[in_account] = data.users.get(in_account)
            # 在线用户为空,将在线用户指向当前用户(因为在线用户为空则不是字典,为布尔值)
            else:
                data.online_users = data.users.get(in_account)
            record("用户登陆成功")
            # 添加当前在线用户,将当前在线用户添加到在线用户列表
            global user
            user = data.users.get(in_account)
            data.update_online_users()
            return True
    else:
        record("用户登陆失败,账号或密码错误")
        return False


# 用户注册
def register():
    """用户注册函数"""
    # 获取数据库用户字典
    record("用户注册账号")
    users = data.users
    # 用户输入昵称密码
    username = input("请输入您的昵称(按R返回上一级):")
    record("用户输入用户昵称%s(R放弃注册)" % username)
    # 用户放弃注册,返回上一级
    if username.upper() == "R":
        record("用户放弃注册")
        return menu.show_login()

    # 用户输入密码
    in_password = input("请输入您的密码:")
    record("用户输入密码%s" % in_password)
    in_confirm = input("请确认您的密码:")
    record("用户输入确认密码%s" % in_confirm)

    # 判断用户密码是否包含特殊字符
    if not in_password.isalnum():
        input("密码只能是字母和数字,按任意键继续!")
        return register()

    # 用户密码长度只能是6~20位
    if not (6 <= len(in_password) <= 20):
        input("密码长度必须为6~20位,按任意键继续!")
        return register()

    # 前后密码一致
    if in_password == in_confirm:
        # 随机生成9位数账号
        account = ""
        count = 9
        while True:
            while count:
                account += str(random.randint(0,9))
                count -= 1
            # 若账号存在重新生成,不存在退出循环
            if account in users:
                continue
            else:
                break

        # 将用户添加到数据库
        user = {"account": account, "password": in_password, "username": username, "email": account+"@bk.com"}
        data.users[account] = user
        data.update_users()
        record("注册成功,获得账号:%s邮箱:%s" % (account,account+"@bk.com"))
        print("恭喜您注册成功,您的账号为:%s邮箱为:%s\n请牢记您的账号!" % (account, account+"@bk.com"))
        input("按任意键继续")

    # 前后密码不一致
    else:
        record("注册失败" )
        input("前后密码输入不一致,按任意键继续!")
        return register()


# 发表文章
def publish_article():
    """发表文章"""
    record("用户发表文章")
    title = input("请输入文章的标题:")
    record("用户输入标题%s" % title)
    content = input("请输入文章的内容:")
    record("用户输入文章内容%s" % content)
    article = {"no": len(my_articles) + 1, "title": title, "content": content, "author": user,
               "time": get_current_time(), "read_count": 0, "is_del": False}
    # 将当前文章添加到我的所有文章列表中
    my_articles.append(article)
    data.all_articles[user.get("account")] = my_articles
    input("发布成功,按任意键继续!")
    return menu.show_manager_my_articles()


# 查看一篇文章
def look_article():
    """查看我的一篇文章"""
    no = input("请输入要查看的文章编号:")
    record("用户输入文章编号%s" % no)
    for article in my_articles:
        if no == str(article.get("no")) and not article.get("is_del"):
            print(article.get("content"))
            article["read_count"] += 1
            break
    else:
        record("文章不存在")
        input("文章不存在,按任意键返回!")
        return menu.show_index()
    record("查看成功")
    # 查看成功
    input("按任意键返回")
    return menu.show_index()


# 删除文章
def del_article():
    """删除文章"""
    no = input("输入要删除文章的编号(按R返回):")
    record("用户输入要删除的文章编号%s或返回上一级" % no)
    # 按R返回
    if no.upper() == "R":
        record("返回上一级")
        return menu.look_my_articles()

    for article in my_articles:
        if no == str(article.get("no")) and not article.get("is_del"):
            article["is_del"] = True
            break

    else:
        record("文章不存在,删除失败")
        input("文章不存在,按任意键返回!")
        return menu.look_my_articles()

    record("成功删除文章编号为%s" % no)
    # 成功删除
    input("文章以删除,按任意键返回")
    return menu.look_my_articles()


# 完善个人信息
def update_my_info(choice):
    """完善个人信息"""
    # 用户输入修改的信息为
    new_info = input("\n请输入您的新信息:")
    record("用户输入新信息%s" % new_info)
    info_list = ["username", "sex", "age", "phone", "address"]
    user[info_list[int(choice)-1]] = new_info
    data.users[user.get("account")] = user
    data.update_users()
    record("修改信息成功")
    input("修改成功,按任意键继续!")
    return menu.look_my_info()


# 修改密码
def update_password():
    """修改密码"""
    old_password = input("请输入您的原密码(按R放弃修改):")
    record("用户输入原密码%s(R返回上一级)" % old_password)
    if old_password.upper() == "R":
        record("返回上一级")
        return menu.show_manager_my_info()

    # 密码验证成功
    if old_password == user.get("password"):
        new_password = input("请输入您的新密码:")
        record("原密码正确,用户输入新密码%s" % new_password)
        confirm_password = input("请确认您的新密码:")
        record("用户输入确认新密码为%s" % confirm_password)
        # 新密码与原密码相同
        if old_password == new_password:
            record("前后密码不一致")
            input("新密码不能与原密码相同,按任意键继续!")
            return menu.update_password()

        # 判断用户密码是否包含特殊字符
        if not new_password.isalnum():
            record("密码中包含特殊字符")
            input("密码只能是字母和数字,按任意键继续!")
            return menu.update_password()

        # 用户密码长度只能是6~20位
        if not (6 <= len(new_password) <= 20):
            record("密码长度不在6~20位之间")
            input("密码长度必须为6~20位,按任意键继续!")
            return menu.update_password()

        # 前后密码不一致
        if not new_password == confirm_password:
            record("前后密码不一致")
            input("前后密码不一致,按任意键继续!")
            return menu.update_password()

        # 修改成功
        else:
            record("修改成功,新密码为%s" % new_password)
            user["password"] = new_password
            # 更新用户字典,并将其写入数据库
            data.users[user.get("account")] = user
            data.update_users()
            input("修改密码成功,请牢记您的密码!按任意键返回")
            return menu.show_manager_my_info()

    # 验证失败
    else:
        record("修改失败")
        input("密码不正确,按任意键继续")
        return menu.update_password()


# 日志函数
def record(msg):
    """记录日志函数"""
    with open("files/blog.log", "a", encoding="utf-8") as f:
        f.write(get_current_time()+":"+msg+"\n")


# 定义当前时间函数
def get_current_time():
    """获取当前时间"""
    t = datetime.datetime.now()
    return "%s年%s月%s日 %s:%s:%s" % (t.year, t.month, t.day, t.hour, t.minute, t.second)


# 当前在线的用户
user = dict()
# 当前用户文章列表
my_articles = list()


# 主程序入口
def main():
    """程序入口"""
    login()
    # publish_article()




if __name__ == '__main__':
    main()

 

数据文件(文件在files目录下)

有序不知道怎么导入文件,用文字说明数据存储,文件的目录结构为:
----blog---项目目录
----------blog.py----
----------data.py----
----------menu.py----
----------service.py----
----------__init__.py---
----------files-----数据文件夹
---------------------online_user.json----在线用户json数据
---------------------users.json----所有用户json数据
---------------------blog.log-----系统日志文件

用户数据结构如下{"1": {"account": "1", "password": "1", "username": "lisa", "email": "1@bk.com"}}

 

结语:由于初学python,本项目为练习项目有很多待完善的地方,在后续的学习中会继续完善本项目。

 

 

Python Flask框架-开发简单博客-项目布局、应用设置_python flask简单项目 个人博客使用Flask框架2.1.2, 数据库sqlite, 开发软件Pycharm专业版(社区版也可) 阅读详情

相关推荐

ubuntu裸机启动python博客项目

关注公众号“轻松学编程”了解更多。 在linux的ubuntu(18.04)中正确安装python的命令: sudo apt clean sudo apt update sudo apt upgrade sudo apt install python3 sudo apt install python3-venv sudo apt install python3-dev sudo apt insta.........

LDC,公众号【轻松学编程】 1108

Python 实现个人博客系统(附零基础python学习资料)

Python 实现个人博客系统(附零基础python学习资料)

Java癫疯的博客 4648

Python博客搭建入门教程

本文还有配套的精品资源,点击获取 简介:本项目可能是关于创建个人博客的教程,使用Python语言并可能结合Django或Flask框架。博客创建涉及到Web开发的多个重要概念和步骤,比如HTTP协议、数据库操作和用户认证等。适合初学者通过实践提升编程和Web开发技能,并逐步扩展项目功能。 1. Python Web开发简介 Python凭借其简洁的语法、强大...

weixin_33239721的博客 1107

Python三百行代码实现一简约个人博客网站(全网最小巧)

这是全网最小的博客,没有比这更小的。虽然小巧,但功能一点儿也不弱,支持文章的分页展示,文章表格,图片和代码语法高亮。文章无限制分类,访问量统计,按时间和按点击量排序,展示最新文章,最热文章,文章留言评论等功能。

猫哥 的沉淀、积累、总结。天天学习,好好向上...c/c++,嵌入式 linux,Android,HarmonyOS,AIOT) 4832

Python 博客

基于Python的简易博客,具有添加、删除用户,写博文,评论,回复评论,删除博文和评论等功能

flowable表中文注释-表结构-主要表结构字段注释-sql脚本

flowable表结构中文注释,主要表结构字段注释,sql执行脚本,包含MySQL版和Oracle版sql脚本。

bushinakeshu的博客 1070

超强干货!Python 100 例带你入门

time 模块大家比较清楚,第一个导入wraps函数(装饰器)为确保被装饰的函数名称等属性不发生改变用的,这点现在不清楚也问题不大,实践一下就知道了。定义一个装饰器:print_info,装饰器函数入参要求为函数,返回值要求也为函数。如下,入参为函数 f, 返回参数 info 也为函数,满足要求。

白帽阿叁的博客 4740

Star CCM+ 实战:旋风分离器网格加密策略与湍流模拟优化

本文针对Star CCM+中旋风分离器模拟精度不足的常见问题,深入剖析了网格质量的关键影响。文章重点介绍了通过局部网格加密策略,精准优化旋流核心区与入口区域的网格密度,从而在保证计算效率的前提下,显著提升湍流模拟的准确性与流场细节的捕捉能力,为工程实践提供了一套有效的优化方案。

water的专栏 535

Python——个人博客项目开发

''' 个人博客项目开发 ''' import os, sys, time, shelve def show_login(): '''显示登录菜单''' print("* ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ *") print("* ~ * ~ *\t\t个人博客项目登录界面\t\t* ~ * ~ *"...

擎天小猪♥的博客 1421

数据中心——Vxlan基本概念1

东西流量指的就是横向流量-------例如:服务器与服务器之间交换流量南北流量指的就是纵向流量-------例如:客户端和服务器之间的流量以下主要是讲解业务平面的网络架构(一般业务平面就需要用到专用的数据中心交换机)

m0_49864110的博客 1万+

电容式麦克风:从原理到实际电路波形解析

本文深入解析电容式麦克风的工作原理,从核心的振膜与背板结构、电荷锁定机制到场效应管放大器的作用。通过实物拆解与等效电路分析,阐明声音振动如何转换为电压信号,并指导如何用示波器实测波形,直观展现声电转换过程,适合电子爱好者和音频技术学习者。

Black的专栏 1081

python博客开发教程_Django博客开发教程:创建项目

开始创建我们的django项目。开发环境:windows 10操作系统,Python 3.6和pycharm。打开Pycharm,新建一个项目。说明:1. 为项目保存路径,myblog为项目名。2. 为选择使用的虚拟环境软件,这里选virtualenv。3. 为虚拟环境保存目录,把它保存在项目里,虚拟环境默认名为env,系统里有多个项目为了区分出来命名为myblogenv4. 为使用的模板语言,默...

weixin_40008884的博客 125

工业级RFID读写器|识读器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯实例方案

本文以工业级RFID读写器CK-LR08-E00和汇川PLC控制器H5U是实例介绍工业级RFID读写器CK-LR08-E00通过以太网TCPIP自由协议与汇川PLC控制器联机与通讯方案。

华翔天诚科技 4372

python博客项目_「Python项目实战」- 聊聊我这个博客项目lyanna

原标题:「Python项目实战」- 聊聊我这个博客项目lyanna我的博客项目lyanna本来是「Python项目实战」课程中做出来的,课程完结之后多了很多迭代,一直到本周刚发布了v3.1,另外已经对v3.2有了计划。不知道你是不是想问我这个项目的产品经理和开发者,需求怎么决定的?如何实现出来?开发过程遇到了什么坑?做lyanna和我日常工作的需求分析,拆分,设计等环节有哪些相同可借鉴的地方,那些...

weixin_39526651的博客 153

MSP430FR6043超声波传感器设计记录

1.前言 最近项目设计了一个超声波传感器 参考TI官方的板子EVM430-FR6043搭建的电路 EVM430-FR6043评估模块是一个用于评估MSP430FR6043 MCU性能的开发平台。 MSP430FR6043 MCU是一款超低功耗器件, 集成了超声波感测模拟前端 用于精确地进行超声波测量。 专为超声波水表、热量计和燃气表而设计, MSP430FR6043 器件采用低功耗加速器 (LEA), 可实现基于高速 ADC 的信号采集以及后续优化数字信号处理, 为电池供电型计量提供了一款超低功耗、高

bingdund的博客 2870

从基础到前沿:深度剖析光束整形与扫描技术

光束扫描的核心在于通过特定手段改变光束的传播方向,从而实现对目标区域的扫描。在这个过程中,振镜、声光偏转器、电光偏转器等元件发挥着关键作用。振镜是一种常见的光束扫描元件,它主要由电机、反射镜和透镜组成。当电机驱动反射镜旋转时,根据光的反射定律,反射镜会改变入射光线的反射方向。假设初始时光束垂直入射到反射镜上,当反射镜绕某一轴旋转一定角度时,光束的反射方向就会相应改变,从而实现光束在空间中的扫描。在激光打标设备中,通过控制振镜的快速摆动,能够使激光束在工件表面快速移动,完成各种图案和文字的标记。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2098

python搭建博客项目思路_【python项目实战】BBS论坛 (1)搭建项目框架

一、准备工作:Windows7-64位python 2.7mysqlversion: 5.7.12django1.9.5IDE开发工具:pycharm 2.7二、设计表结构主要涉及点:1、表的ER图,要设计逻辑,有哪些表,每个表有哪些属性2、models的 模型常用字段要熟练,本次使用的有:CharFieldForeignKeyImageFieldTextFieldDateTimeFieldB...

weixin_29796279的博客 347

8、 使用TPM密钥:从理论到实践的全面指南

本文全面介绍了如何使用TPM(可信平台模块)进行密钥管理,涵盖密钥的创建、存储、加载、迁移以及特殊密钥类型的使用。通过详细的操作步骤和代码示例,帮助读者掌握TPM密钥管理技术,确保系统的安全性和可靠性。

weixin_36212459的博客 242

【亲测免费】 开源项目:Python 博客系统实战

开源项目:Python 博客系统实战 项目介绍 本项目是基于Python开发的一个简约博客系统,托管在GitHub上(pycoder2000/blog)。它旨在提供一个轻量级、易于定制和个人化的博客写作与分享解决方案。利用Flask或Django等Web框架,结合Markdown编辑,本项目使得创建个人在线日记或专业博客变得简单快捷。支持动态文章发布、分类管理、评论互动等功能,适合技术爱好者、作...

gitblog_00321的博客 1040

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python+Django搭建个人博客项目

*在这里,引用该文件(有include('blog.urls')会告诉 Django 查找 blog应用中的路由配置,并将这些路由添加到主项目的 URL 配置中。​ 在项目myblog的urls.py中:导入blog的路由和引用该文件 *1、安装python为了能够运行py文件 2、安装虚拟环境,并激活(命令就是路径)——激活,创建模板文件夹——templates view.py urls.py(在blog中)blog-自己的模块;

2501_93755423的博客 413

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

python搭建博客项目思路_Django项目——Blog简易开发入门

一、模型层模型层是什么位于视图与数据库之间pytho对象与数据库表的转换为什么需要模型层屏蔽不同数据库之间的差异开发者更加专注于业务逻辑的开发提供多种便捷的工具有利于开发工作模型层的配置settings.py文件中ENGINE:表示采用的数据库驱动NAME: 表示该数据库驱动的文件创建博客文章类型设计博客模型博客组成类型备注文字标题文字类型文章摘要文字类型文章内容文字类型唯一ID标记数值类型自增、...

weixin_39782573的博客 493

python博客项目评论_项目实战 Python Flask 个人博客 网上聊天平台 完整代码

【实例简介】完整版Python-Flask项目,调试通过,直接下载即可运行(需要将app/email.py中的邮箱信息修改为自己的真实邮箱信息)。包括:登陆、注册、修改个人信息、浏览、发布文章、留言、评论、回复等多个功能。可作为新手练习,课程设计,加工一下也可以作为毕业设计,代码注释详细,便于理解。【实例截图】【核心代码】3af1a6bc-9f4f-4ef2-80d4-d916202d6e4e└─...

weixin_36335903的博客 266

基于Django的博客系统源码_Python学习项目

基于Django的博客系统源码_Python学习项目 去发现同类优质开源项目:https://gitcode.com/ 本项目是一个面向Python学习者的后端开发实践项目,包含了完整的博客系统源码。通过该项目,您将能够学习到如何运用Django框架进行Web开发,从而掌握Python后端开发的基础技能。 项目特点如下: 采用Django框架,让您能够深入学习并理解MVC架构在实际项目中的应用。...

gitblog_06796的博客 366

python博客项目_python——博客项目

需求分析——首页(显示文章)——文章详情——点赞,点踩——文章评论-字评论-评论的展示——登录功能(图片验证码)——注册功能(基于form验证,ajax)——个人站点(不同人不同样式,文章过滤)——后台管理:-文章展示——新增文章-富文本编辑器设计程序(框架,数据库设计)——UserInfo----用户表——blog----个人站点表——Article----文章表——commit----评论表—...

weixin_40002009的博客 206

python django部署docker_Docker部署Django博客项目(一)

由于博客项目是由Python+Django+Mysql+uwsgi+Nginx搭建的,所以这里需要Nginx、mysql和博客镜像这三个镜像,Mysql与Nginx镜像直接pull下载即可,博客运行环境镜像则是自己手动构建的,可参考:Dockerfile与腾讯云容器服务构建镜像镜像下载docker pull nginx:mainline-alpine-perl ...

weixin_39620278的博客 258

python搭建博客项目思路_基于python框架Scrapy爬取自己的博客内容过程详解

前言python中常用的写爬虫的库常有urllib2、requests,对于大多数比较简单的场景或者以学习为目的,可以用这两个库实现。这里有一篇我之前写过的用urllib2+BeautifulSoup做的一个抓取百度音乐热门歌曲的例子,有兴趣可以看一下。本文介绍用Scrapy抓取我在博客园的博客列表,只抓取博客名称、发布日期、阅读量和评论量这四个简单的字段,以求用较简单的示例说明Scrapy的最基...

weixin_39958112的博客 129
上一篇: python组合数据类型
下一篇: python内存分析
.123456.
博客等级 码龄9年 15粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值