From 5d3d6e5a2ee089010c0530bd1226f9f1b5acd032 Mon Sep 17 00:00:00 2001 From: "{admin@attacker.club}" Date: Mon, 8 Jan 2024 01:11:31 +0800 Subject: [PATCH] init --- README.md | 36 ++++- docs/css/extra.css | 169 ++++++++++++++++++++++++ docs/drf/queryset.md | 43 ++++++ docs/image/favicon.ico | Bin 0 -> 25991 bytes docs/image/logo.png | Bin 0 -> 6896 bytes docs/index.md | 34 +++++ docs/python/basics.md | 0 docs/python/common_modules.md | 0 docs/python/control_flow.md | 0 docs/python/exception_handling.md | 0 docs/python/functions_and_modules.md | 0 docs/python/index.md | 77 +++++++++++ docs/python/introduction.md | 77 +++++++++++ docs/python/variables_and_data_types.md | 0 docs/web/backend_basics.md | 0 docs/web/celery_async_tasks.md | 0 docs/web/database_basics.md | 0 docs/web/drf.md | 0 docs/web/frontend_css.md | 0 docs/web/frontend_html.md | 0 docs/web/redis_message_queue.md | 0 docs/web/vue.md | 0 mkdocs.yml | 136 +++++++++++++++++++ requirements.txt | 5 + 24 files changed, 576 insertions(+), 1 deletion(-) create mode 100644 docs/css/extra.css create mode 100644 docs/drf/queryset.md create mode 100644 docs/image/favicon.ico create mode 100644 docs/image/logo.png create mode 100644 docs/index.md create mode 100644 docs/python/basics.md create mode 100644 docs/python/common_modules.md create mode 100644 docs/python/control_flow.md create mode 100644 docs/python/exception_handling.md create mode 100644 docs/python/functions_and_modules.md create mode 100644 docs/python/index.md create mode 100644 docs/python/introduction.md create mode 100644 docs/python/variables_and_data_types.md create mode 100644 docs/web/backend_basics.md create mode 100644 docs/web/celery_async_tasks.md create mode 100644 docs/web/database_basics.md create mode 100644 docs/web/drf.md create mode 100644 docs/web/frontend_css.md create mode 100644 docs/web/frontend_html.md create mode 100644 docs/web/redis_message_queue.md create mode 100644 docs/web/vue.md create mode 100644 mkdocs.yml create mode 100644 requirements.txt diff --git a/README.md b/README.md index dd2365c..1aad305 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,36 @@ -# PyDevops + +# Python + +## 安装MkDocs + +```bash +# 初始化项目 +pip3 install mkdocs +python3 -m mkdocs new . + +# 安装依赖包 +pip3 install -r requirements.txt +``` + +## 启动 + +```bash +# 服务启动 +mkdocs serve +# 构建 +mkdocs build +mkdocs build –-clean # 清理文档残留 +``` + + +## readthedocs.com + + diff --git a/docs/css/extra.css b/docs/css/extra.css new file mode 100644 index 0000000..f1f1ef3 --- /dev/null +++ b/docs/css/extra.css @@ -0,0 +1,169 @@ +/* 调整主体内容的上边距,以防止内容被导航栏遮挡 */ +.md-main { + margin-top: 48px; +} +*/ + +/* 顶部导航栏背景色 */ +.md-header { + background-color: rgb(37, 43, 60); /* 调整顶部导航栏背景色 */ + top: 48px; +} + +/* 底部导航栏背景色 */ +.md-footer { + background-color: rgb(37, 43, 60); /* 调整底部导航栏背景色 */ +} + +/* 标签栏背景色 */ +.md-tabs { + background-color: #0a7be0; /* 调整标签栏背景色 */ +} + +/* 底部导航链接样式 */ +.md-footer-nav__link { + padding-top: 0.8rem; /* 调整底部导航链接的上边距 */ +} + +/* 主体部分内边距 */ +.md-main__inner { + margin-top: 3rem; /* 调整主体部分的上边距 */ +} + +/* 进度条标签样式 */ +.progress-label { + position: absolute; + text-align: center; + font-weight: 700; + width: 100%; + margin: 0; + line-height: 1.2rem; + white-space: nowrap; + overflow: hidden; +} + +/* 进度条样式 */ +.progress-bar { + height: 1.2rem; + float: left; + background-color: #2979ff; /* 调整进度条的颜色 */ +} + +.progress { + display: block; + width: 100%; + margin: 0.5rem 0; + height: 1.2rem; + background-color: #eeeeee; + position: relative; +} + +/* 细线型进度条 */ +.progress.thin { + margin-top: 0.9rem; + height: 0.4rem; +} + +.progress.thin .progress-label { + margin-top: -0.4rem; +} + +.progress.thin .progress-bar { + height: 0.4rem; +} + +/* 不同进度段的颜色 */ +.progress-100plus .progress-bar { + background-color: #00e676; +} + +.progress-80plus .progress-bar { + background-color: #fbc02d; +} + +.progress-60plus .progress-bar { + background-color: #ff9100; +} + +.progress-40plus .progress-bar { + background-color: #ff5252; +} + +.progress-20plus .progress-bar { + background-color: #ff1744; +} + +.progress-0plus .progress-bar { + background-color: #f50057; +} + +/* 表格边框样式 */ +.md-typeset table:not([class]) td { + border: 0.05rem solid var(--md-default-fg-color--lightest); /* 调整表格边框样式 */ +} + +.md-typeset table:not([class]) tr:first-child td { + border: 0.05rem solid var(--md-default-fg-color--lightest); +} + +/* 图片查看器背景色 */ +.lg-backdrop { + background-color: rgb(0 0 0 /0.8); /* 调整图片查看器背景色 */ +} + +/* 图片查看器外层样式 */ +.lg-outer .lg-img-wrap { + padding: 80px; +} + +/* 侧边栏源码链接背景色 */ +.md-nav__source { + background-color: #fc6554; /* 调整侧边栏源码链接背景色 */ +} + +/* 网格布局样式 */ +.md-grid { + margin-left: 1rem; + margin-right: auto; + max-width: initial; +} + +/* 顶部间距 */ +.md-top { + margin-top: 2rem; /* 调整顶部间距 */ +} + +/* 自定义样式,背景色为 #0a7be0,文本颜色为白色 */ +.x-pack-span { + background-color: #0a7be0; + padding: 2px 5px; + color: #ffffff; +} + +/* 自定义样式,背景色为 seagreen,文本颜色为白色 */ +.new-span { + background-color: seagreen; + padding: 2px 5px; + color: #ffffff; +} + +/* 增加边框蓝条样式 */ +.md-typeset .admonition, +.md-typeset details { + border-width: 0; + border-left-width: 4px; +} +.md-typeset .admonition.abstract, +.md-typeset details.abstract { + border-left-color: #3370ff; +} + +/* 段落和列表样式 */ +.md-typeset p, +.md-typeset ul, +.md-typeset ol, +.md-typeset dl, +.md-typeset blockquote { + display: flow-root; + margin: 1em 0; +} diff --git a/docs/drf/queryset.md b/docs/drf/queryset.md new file mode 100644 index 0000000..d79c339 --- /dev/null +++ b/docs/drf/queryset.md @@ -0,0 +1,43 @@ + +# Queryset + +Django 中的 Queryset 是一个用于查询数据库的抽象概念。它允许你以一种非常 Pythonic 的方式执行数据库查询操作。 + +## 创建 Queryset + +要创建 Queryset,你可以使用 Django 的模型管理器。模型管理器是每个 Django 模型的属性,用于与数据库进行交互。 + +```python +# 示例模型 +class Book(models.Model): + title = models.CharField(max_length=100) + author = models.CharField(max_length=50) + +# 使用模型管理器创建 Queryset +books = Book.objects.all() +``` + +## 过滤 Queryset + +```python +# 获取所有作者为 'John' 的书籍 +johns_books = Book.objects.filter(author='John') +排序 Queryset +使用 order_by 方法对 Queryset 进行排序。 + +python +Copy code +# 按照出版日期升序排序 +sorted_books = Book.objects.all().order_by('publish_date') +切片和限制 Queryset +你可以使用切片操作符 [] 对 Queryset 进行切片或使用 [:n] 限制记录的数量。 + +python +Copy code +# 获取前5本书籍 +first_five_books = Book.objects.all()[:5] +这只是 Queryset 基础知识的简单示例。你可以根据实际需要扩展文档,介绍更多高级的查询操作和技巧。 + +Copy code + +请确保你的实际项目结构和需求与这个文档一致,并根据需要调整内容。 diff --git a/docs/image/favicon.ico b/docs/image/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ec36a26348ece3f61d0cf48fd970ad6a37dddcc6 GIT binary patch literal 25991 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 literal 0 HcmV?d00001 diff --git a/docs/image/logo.png b/docs/image/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..3497d132d3d8c28fc97002d6d3c85c4f75a4fb97 GIT binary patch literal 6896 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 +# Python 入门 +Python 是一门强大而灵活的编程语言,被广泛应用于多个领域,包括 Web 开发、数据科学、人工智能等。在本入门文档中,我们将介绍 Python 的基础知识,帮助你开始学习这门语言。 + +## 介绍 +Python 由 Guido van Rossum 于 1989 年创造,目标是设计一种易读、易学的语言。它具有简洁的语法和强大的标准库,使开发人员能够更轻松地实现各种任务。 + +## 为什么选择 Python? +易学易用: Python 语法简洁清晰,适合初学者入门,同时也是高级程序员的首选。 +丰富的库和框架: Python 生态系统拥有大量的第三方库和框架,可以方便地进行各种开发任务。 +跨平台: Python 可以在不同的操作系统上运行,包括 Windows、Linux 和 macOS。 +社区支持: Python 拥有庞大的社区,可以轻松获取帮助、学习资源和开源工具。 +安装 Python +在开始学习 Python 之前,你需要安装 Python 解释器。以下是在不同操作系统上安装 Python 的步骤: + +### Windows +访问 Python 官方网站。 +下载适用于 Windows 的最新 Python 版本。 +运行下载的安装程序,并按照提示进行安装。 +在安装过程中,勾选 "Add Python to PATH" 选项,以便可以在命令提示符中直接运行 Python。 +安装完成后,你可以在命令提示符中输入以下命令检查是否成功安装: + +```bash +python --version +``` + +### Linux +大多数 Linux 发行版都预装了 Python。你可以在终端中输入以下命令检查是否已安装: + +```bash +python --version +``` + +如果未安装,可以使用包管理器安装。例如,在 Ubuntu 上,可以运行: + +```bash +sudo apt-get update +sudo apt-get install python3 +``` + +### macOS +macOS 通常预装了 Python 2.x 版本。建议安装 Python 3.x。你可以使用 Homebrew 包管理器来安装: + +```bash +brew install python3 +``` +安装完成后,检查版本: + +bash +Copy code +python3 --version +Hello, World! +现在,让我们来写一个经典的 "Hello, World!" 程序。创建一个新的文本文件,命名为 hello.py,并输入以下代码: + +python +Copy code +print("Hello, World!") +保存文件后,打开终端,进入文件所在的目录,然后运行: + +bash +Copy code +python hello.py +或者使用 Python 3: + +bash +Copy code +python3 hello.py +你将在终端看到输出:"Hello, World!"。 + +恭喜!你已经成功运行了你的第一个 Python 程序。 diff --git a/docs/python/introduction.md b/docs/python/introduction.md new file mode 100644 index 0000000..b1c19b0 --- /dev/null +++ b/docs/python/introduction.md @@ -0,0 +1,77 @@ + +# Python 入门 +Python 是一门强大而灵活的编程语言,被广泛应用于多个领域,包括 Web 开发、数据科学、人工智能等。在本入门文档中,我们将介绍 Python 的基础知识,帮助你开始学习这门语言。 + +## 介绍 +Python 由 Guido van Rossum 于 1989 年创造,目标是设计一种易读、易学的语言。它具有简洁的语法和强大的标准库,使开发人员能够更轻松地实现各种任务。 + +## 为什么选择 Python? +易学易用: Python 语法简洁清晰,适合初学者入门,同时也是高级程序员的首选。 +丰富的库和框架: Python 生态系统拥有大量的第三方库和框架,可以方便地进行各种开发任务。 +跨平台: Python 可以在不同的操作系统上运行,包括 Windows、Linux 和 macOS。 +社区支持: Python 拥有庞大的社区,可以轻松获取帮助、学习资源和开源工具。 +安装 Python +在开始学习 Python 之前,你需要安装 Python 解释器。以下是在不同操作系统上安装 Python 的步骤: + +### Windows +访问 Python 官方网站。 +下载适用于 Windows 的最新 Python 版本。 +运行下载的安装程序,并按照提示进行安装。 +在安装过程中,勾选 "Add Python to PATH" 选项,以便可以在命令提示符中直接运行 Python。 +安装完成后,你可以在命令提示符中输入以下命令检查是否成功安装: + +```bash +python --version +``` + +### Linux +大多数 Linux 发行版都预装了 Python。你可以在终端中输入以下命令检查是否已安装: + +```bash +python --version +``` + +如果未安装,可以使用包管理器安装。例如,在 Ubuntu 上,可以运行: + +```bash +sudo apt-get update +sudo apt-get install python3 +``` + +### macOS +macOS 通常预装了 Python 2.x 版本。建议安装 Python 3.x。你可以使用 Homebrew 包管理器来安装: + +```bash +brew install python3 +``` +安装完成后,检查版本: + +bash +Copy code +python3 --version +Hello, World! +现在,让我们来写一个经典的 "Hello, World!" 程序。创建一个新的文本文件,命名为 hello.py,并输入以下代码: + +python +Copy code +print("Hello, World!") +保存文件后,打开终端,进入文件所在的目录,然后运行: + +bash +Copy code +python hello.py +或者使用 Python 3: + +bash +Copy code +python3 hello.py +你将在终端看到输出:"Hello, World!"。 + +恭喜!你已经成功运行了你的第一个 Python 程序。 diff --git a/docs/python/variables_and_data_types.md b/docs/python/variables_and_data_types.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/web/backend_basics.md b/docs/web/backend_basics.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/web/celery_async_tasks.md b/docs/web/celery_async_tasks.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/web/database_basics.md b/docs/web/database_basics.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/web/drf.md b/docs/web/drf.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/web/frontend_css.md b/docs/web/frontend_css.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/web/frontend_html.md b/docs/web/frontend_html.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/web/redis_message_queue.md b/docs/web/redis_message_queue.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/web/vue.md b/docs/web/vue.md new file mode 100644 index 0000000..e69de29 diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..12e19eb --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,136 @@ +nav: +# - 默认页面: index.md +- Python 基础篇: + - Python 入门: python/introduction.md + - 变量和数据类型: python/variables_and_data_types.md + - 控制流程(if、else、for、while): python/control_flow.md + - 函数和模块: python/functions_and_modules.md + - 异常处理: python/exception_handling.md + - 第三方常用模块: python/common_modules.md +- Web 基础基: + - HTML: web/frontend_html.md + - CSS: web/frontend_css.md + - JavaScript: web/frontend_js.md +- Web 开发高级篇: + - Vue.js 前端开发: + - Vue.js 简介: web/vue/introduction.md + - Vue.js 基础概念: web/vue/basic_concepts.md + - Vue.js 组件和指令: web/vue/components_and_directives.md + - Vue.js 状态管理 (Vuex): web/vue/vuex.md + - Django 后端开发: + - Django REST framework (DRF) 简介: web/drf/introduction.md + - DRF 序列化器: web/drf/serializers.md + - DRF 视图: web/drf/views.md + - DRF 路由: web/drf/routing.md + - DRF 认证和权限: web/drf/authentication_and_permissions.md + - Django数据库ORM: web/drf/orm.md + - Django数据库操作Queryset: web/drf/queryset.md + - 定时任务和消息队列: + - Celery 异步任务: web/celery_async_tasks.md + - Redis 作为消息队列: web/redis_message_queue.md + +site_name: PythonFullStackGuide +site_description: Python 全栈开发 +site_author: Logan +site_url: http://localhost:8000 +copyright: Copyright @ 2024 Logan Li, All rights reserved. + +repo_name: PythonFullStackGuide +repo_url: https://git.opsx.vip/docs/PythonFullStackGuide.git +# theme: mkdocs # 默认主题 +# theme: readthedocs +# theme: material # pip3 install mkdocs-material +edit_uri: https://git.opsx.vip/docs/PythonFullStackGuide/src/branch/main/mkdocs.yml + +# 自定义 CSS +extra_css: +- css/extra.css + +# 主题配置 +theme: + name: 'material' + logo: './image/logo.png' + favicon: './image/favicon.ico' + language: 'zh' # 设置语言为中文 + + # 调色板配置,用于白天/夜晚模式切换 + palette: + - scheme: default + accent: blue + toggle: + icon: material/weather-sunny + name: Switch to dark mode + - scheme: slate + accent: blue + toggle: + icon: material/weather-night + name: Switch to light mode + features: + - navigation.instant + - navigation.tracking + - navigation.indexes + - navigation.top + - search.suggest + - search.highlight + - search.share + - header.autohide + - content.tabs.link + + # 代码高亮配置 + highlightjs: true + hljs_languages: + - sh + - sql + - shell + - bash + - yaml + - python + + +# Markdown扩展配置 +markdown_extensions: +- admonition # 用于在文档中创建提示、注意事项、警告等提示框 +- footnotes # 脚注 +- meta # 定义元数据,通过文章上下文控制,如disqus +- pymdownx.caret # 下划线上标 +- pymdownx.tilde # 删除线下标 +- pymdownx.critic # 增加删除修改高亮注释,可修饰行内或段落 +- pymdownx.details # 提示块可折叠 +- pymdownx.inlinehilite # 行内代码高亮 +- pymdownx.mark # 文本高亮 +- pymdownx.smartsymbols # 符号转换 +- pymdownx.betterem: # 对加粗和斜体更好的检测 + smart_enable: all +- pymdownx.tasklist: # 复选框checklist + custom_checkbox: true + +- codehilite: # 用于在Markdown文档中进行代码块的高亮显示 + guess_lang: True # 允许尝试猜测代码块的语言类型 + linenums: False # 控制是否在代码块旁边显示行号 +- toc: # 锚点 + permalink: True + + +# 配置搜索插件 +plugins: +- search: # 启用搜索插件 + lang: # 搜索支持的语言 + - en # 英语 + - ja # 日语 + separator: '[\s\-\.]+' # 搜索关键词的分隔符正则表达式 +# 社交链接 +extra: + version: + method: mike + social: + - icon: fontawesome/brands/github + link: https://git.opsx.vip/docs/PythonFullStackGuide.git + # target: _blank + - icon: fontawesome/solid/envelope + link: mailto:admin@attacker.club + + + + + + diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..d7f2f23 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +mkdocs +mkdocs-material +mdx_gh_links +markdown +markdown-checklist \ No newline at end of file