后端认证鉴权身份认证【免费下载链接】django-allauthIntegrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Mirror of https://codeberg.org/allauth/django-allauth/项目地址https://gitcode.com/gh_mirrors/dj/django-allauth点击查看免费下载导读django-allauth 开箱即用的模板刻意保持朴素、无任何样式把外观决定权完全留给开发者。本文以官方模板文档为主体深入讲解两种定制路线一是整体拷贝模板后自由修改二是利用内置的布局Layout与元素Element机制只覆盖少量核心模板即可统一全站登录、注册、MFA、社交账号绑定等所有页面的外观。读完本文你将掌握{% element %}/{% slot %}模板标签的工作原理、22 个可覆盖元素与 3 套布局的完整清单并能参照仓库自带的 Bootstrap 示例项目快速落地到自己的 Django 项目中。一、设计理念为什么开箱模板不带任何样式打开仓库中的 allauth/templates 目录可以看到内置模板全部是结构清晰但零样式的 HTML。官方文档明确解释了这一取舍项目不想在前端样式方案的诸子百家中站队页面观感应当与你自己项目的品牌调性保持一致。因此官方推荐的做法是把模板拷贝到自己的项目里按需修改。不过仅凭拷贝全部模板这一条路线在功能丰富的场景下并不轻松。正如文档所指出的当涉及第三方账号登录social account、两步验证MFA等功能时要调整的远不止一个login.html和一个signup.html。为此django-allauth 内置了一套抽象机制只覆盖少数核心模板即可统一调整所有页面的观感。这条路见效快但相比逐个手写全部模板灵活性自然有限——两种路线各有适用场景下文分别展开。二、路线一覆盖内置模板Override the Built-In Templates2.1 Django 模板查找顺序与DIRS优先级所有内置模板位于 allauth/templates。当allauth位于INSTALLED_APPS且模板引擎配置了APP_DIRS: True时Django 就能自动找到这些模板。Django 的模板查找顺序是先查TEMPLATES配置中OPTIONS之外的DIRS列表再按APP_DIRS遍历各应用包内的templates目录。正因为DIRS先于APP_DIRS被搜索只要在DIRS中加入你自己的项目级模板目录同名模板就会覆盖 allauth 内置模板。官方文档给出的标准配置如下from pathlib import Path BASE_DIR Path(__file__).resolve().parent.parent TEMPLATES [ { BACKEND: django.template.backends.django.DjangoTemplates, DIRS: [ BASE_DIR / templates ], APP_DIRS: True, OPTIONS: { context_processors: [ django.template.context_processors.debug, django.template.context_processors.request, django.contrib.auth.context_processors.auth, django.contrib.messages.context_processors.messages, ], }, }, ]其中DIRS中的BASE_DIR / templates就是你的项目级模板目录APP_DIRS: True保证未覆盖的模板仍能回落到 allauth 内置目录。从源码结构看request与messages两个 context processor 是 allauth 模板正常运行所依赖的消息渲染、请求上下文均由此而来建议保留。2.2 拷贝后的目录结构如果你选择把全部模板拷贝到BASE_DIR / templates该目录应至少包含以下顶层文件夹对应各子应用account文件夹来自allauth.account应用如登录、注册、邮箱管理、密码重置等页面对应源码 allauth/templates/accountsocialaccount文件夹来自allauth.socialaccount应用如第三方账号连接、社交登录等页面对应源码 allauth/templates/socialaccountmfa文件夹来自allauth.mfa应用如 TOTP、WebAuthn、恢复码等页面对应源码 allauth/templates/mfaallauth文件夹全站整体样式模板布局与元素对应源码 allauth/templates/allauth此外还有openid、usersessions、idp等文件夹取决于你启用的功能模块。提示allauth文件夹内的布局与元素模板是覆盖少数核心模板即可全局生效的关键详见下文第三、四节。三、路线二样式化现有模板——Layouts 布局系统与其拷贝全部模板不如利用内置机制通过覆盖少量核心模板调整所有页面的整体观感。这套机制由两大部分组成布局Layouts与元素Elements。3.1 两种基础页面布局所有内置页面模板最终都归属于两种布局之一entrance 布局入口布局用户正在认证过程中的页面例如登录页、注册页manage 布局账号管理布局已认证用户管理账号的页面例如修改邮箱、修改密码。你只需在自己的项目模板目录中提供以下三个模板即可改变全局布局模板文件说明allauth/layouts/base.html全站最顶层基础模板html、head、菜单、消息区等allauth/layouts/entrance.html入口布局继承 base 模板供登录/注册等页面使用allauth/layouts/manage.html账号管理布局继承 base 模板供邮箱/密码等管理页使用仓库内置的这三个模板都很简单。以 allauth/layouts/base.html 为例它输出标准的 HTML5 文档骨架包含head_title、extra_head、body、content、extra_body等 block并在body中渲染 messages 消息列表与一个依赖登录态的动态菜单登录后显示Change Email / Change Password / Account Connections / Two-Factor Authentication / Sessions / Sign Out未登录显示Sign In / Sign Up。而 entrance.html 与 manage.html 均只是继承 base 并保留空的contentblock。因此你的base.html里放导航栏与整体页面框架entrance.html里放登录/注册页特有的居中卡片容器manage.html里放管理页的侧栏布局——一次覆盖全局生效。3.2 布局模板中的 block 契约从内置 base 模板可以提炼出供子模板填充的 block 契约head_title页面标题extra_head注入head的额外资源如自定义 CSSbody页面主体默认内含contentblock 与 messages 渲染content具体页面内容区各功能页面模板主要填充此 blockextra_body页面底部额外内容如自定义 JS。在entrance.html/manage.html这类二级布局中你通常只需重写body或content之上的结构并继续暴露content给具体页面模板填充。四、Elements 元素系统不写死标签只写语义4.1 为什么需要元素抽象考虑一个最简单的例子渲染一个 Bootstrap 按钮通常写作button classbtn btn-primaryOkay/button但换一个 CSS 框架class 名甚至标签结构都会不同。如果每个 allauth 页面模板里都直接写死button、h1、form换肤就意味着改遍所有文件。因此内置模板不直接输出这些标签而是通过一个特殊的元素模板标签element templatetag渲染{% load allauth %} {% element h1 tagsfoo,bar %}Welcome{% endelement %}4.2 底层实现element、slot、setvar三个标签这三个标签的实现位于 allauth/templatetags/allauth.py是理解整套机制的关键。{% element %}标签do_element/ElementNodeallauth/templatetags/allauth.py解析形如{% element 名称 参数值 %}的写法至多允许一个位置参数即元素名称其余为关键字参数渲染时按优先级挑选模板文件先尝试布局特化模板allauth/elements/{名称}__{布局}.html布局名取自{% extends %}链中的allauth/layouts/前缀或继承自外层 element 的布局上下文再回落至通用模板allauth/elements/{名称}.html关键字参数经解析后放入attrs上下文变量tags参数会被按逗号拆分为列表同时注入origin变量值为使用该元素的基础模板名去掉扩展名后的字符串如从account/login.html内使用时origin为account/login元素内部的{% slot %}内容被收集进slots字典连同attrs、origin一起传给元素模板渲染。{% slot %}标签do_slot/SlotNodeallauth/templatetag/allauth.py支持命名槽。不带名字时槽名为default。当元素模板渲染时槽内容会按名称被收集到slots上下文中元素外部覆盖时也可通过context[slots]读取。{% setvar %}标签do_setvar/SetVarNodeallauth/templatetags/allauth.py把一段渲染结果存入上下文变量常用于在页面中缓存/复用渲染片段。4.3 覆盖一个元素以h1为例{% element h1 %}底层渲染的是 allauth/elements/h1.html其默认内容极简{% load allauth %}h1{% slot %}{% endslot %}/h1如果想统一改变所有页面的标题样式覆盖这个文件即可例如官方文档给出的示例{% load allauth %} div classmyproject-h1 aa-{{ origin|slugify }} stylefont-size: {% if foo in attrs.tags %}3{% else %}5{% endif %}rem {% slot %}{% endslot %} /div这个示例虽然略显刻意却完整展示了元素模板可用的三个上下文变量{{ origin }}当前元素被使用处的基础模板名如account/login可用slugify过滤后作为 CSS 类名实现按页面差异化定制{{ attrs.tags }}调用方传入的tags参数已被解析为列表可用in判断{% slot %}调用方放在{% element %}与{% endelement %}之间的内容在这里输出。4.4 命名槽Named Slots任意顺序注入槽也可以命名。此时元素调用方与元素模板之间通过槽名传递内容例如{% load allauth %} {% element form methodpost actionaction_url %} {% slot body %} ... {% endslot %} {% slot actions %} ... {% endslot %} {% endelement %}对应覆盖 allauth/elements/form.html 时命名槽可以以任意顺序注入例如把actions槽放在body槽之前{% load allauth %} form method{{ attrs.method }} action{{ attrs.action }} {% slot body %} {% endslot %} hr {% slot actions %} {% endslot %} /form仓库内置的form.html实现与之类似输出form容器method取自attrs.methodaction仅在attrs.action存在时输出内部依次渲染body与actions两个槽。4.5 完整元素清单以下 22 个元素模板位于 allauth/templates/allauth/elements全部可以按需覆盖模板文件说明allauth/elements/alert.html展示 alert 消息allauth/elements/badge.html用于标注的徽章allauth/elements/button.html按钮button传href属性时自动渲染为a链接见 button.htmlallauth/elements/button_group.html一组相关按钮的容器allauth/elements/details.html可折叠详情detailsallauth/elements/field.html单个表单字段支持textarea、checkbox、radio等类型及label、help_text命名槽见 field.htmlallauth/elements/fields.html表单字段集合默认渲染{{ form.as_p }}因此默认不渲染上面的field.htmlallauth/elements/form.htmlform容器标签allauth/elements/h1.html一级标题h1allauth/elements/h2.html二级标题h2allauth/elements/hr.html水平分割线hrallauth/elements/img.html图片标签imgallauth/elements/panel.html面板又称卡片由标题、正文与操作区组成title、body、actions三个槽见 panel.htmlallauth/elements/p.html段落pallauth/elements/provider.html指向第三方登录提供商的链接allauth/elements/provider_list.html第三方提供商列表的容器元素allauth/elements/table.html表格tableallauth/elements/tbody.html表格体tbodyallauth/elements/td.html表格数据单元格tdallauth/elements/th.html表格表头单元格thallauth/elements/thead.html表格头theadallauth/elements/tr.html表格行tr几个值得注意的覆盖要点field.html接收attrs.type、attrs.required、attrs.placeholder、attrs.autocomplete、attrs.value等大量属性并暴露label、help_text两个命名槽——这决定了你可以在不触碰任何页面内容模板的前提下统一改变全站表单字段的渲染外观fields.html默认只是{{ attrs.form.as_p }}若想改为逐字段精细渲染从而让field.html生效需要覆盖该模板并遍历表单字段panel.html的actions槽会被渲染为ul列表覆盖时注意保持该语义或自行改写。4.6 布局特化元素元素名__布局名.html元素解析逻辑见 allauth/templatetags/allauth.py会优先查找allauth/elements/{名称}__{布局}.html这类布局特化模板。也就是说你可以针对入口布局与账号管理布局分别定制同一元素。仓库自带的 Bootstrap 示例项目正是这样做的例如examples/regular-django/example/templates/allauth/elements/button__entrance.html继承通用 button.html 并追加w-100类使入口页按钮全宽同目录下还有form__entrance.html、h1__entrance.html、h2__entrance.html等表明入口布局下标题/表单样式与登录页卡片容器配合而管理布局下的页面仍使用通用元素样式。这套通用元素 布局特化元素的优先级设计是只覆盖少量文件即可实现整站换肤的另一关键。五、实战参考仓库自带的 Bootstrap 示例项目官方文档推荐直接参考仓库中的示例项目模板位于 examples/regular-django/example/templates。该项目展示了如何在不改动任何内容模板的前提下仅通过覆盖布局与元素完成全套 Bootstrap 5 风格的登录/注册/管理界面。5.1 覆盖布局base.html 引入了 Bootstrap 5.3.2 的 CSS 与 JS用header内的 navbar 实现了品牌导航栏、语言切换表单以及登录态相关的Manage Account / Sign In / Sign Up按钮同时保留head_title、body、content、extra_body等 block 契约。entrance.html 则是典型的居中卡片入口布局外层使用bg-body-secondary背景与 flex 布局垂直居中内层用containerrow justify-content-md-centercol col-lg-4限定卡片宽度消息通过{% element alert levelmessage.tags %}渲染成 Bootstrap alert卡片主体为bg-white shadow rounded-4并在内部继续暴露contentblock 给登录/注册页填充。5.2 覆盖元素示例项目覆盖了alert、badge、button、field、fields、form、h1、img、panel、provider、provider_list、table等元素见 examples/regular-django/example/templates/allauth/elements再叠加button__entrance、form__entrance、h1__entrance、h2__entrance等布局特化版本实现了入口页与管理页的风格分区。5.3 分应用微调示例还在各功能应用下覆盖了少量页面级模板例如account/base_manage_email.html、account/base_manage_password.html、account/base_manage_phone.html邮箱/密码/手机号管理页的公共框架mfa/base_manage.html、socialaccount/base_manage.html、usersessions/base_manage.htmlMFA、社交账号、会话管理页的公共框架。这种全局布局与元素 各应用少量页面框架的组合正是官方推荐的最小覆盖策略。六、实践建议与常见问题6.1 两条路线如何选快速换肤、保持与上游模板同步优先走布局 元素路线。你只维护 allauth/templates/allauth 下对应的少数文件layouts/与elements/升级 allauth 时内容模板的改动对你不产生冲突深度定制、页面级重构拷贝全部模板到DIRS指向的目录后自由修改。注意这会使你与上游内容模板脱钩升级时需要人工比对变更。6.2 常见坑位忘记APP_DIRS: True仅配置DIRS而未开启APP_DIRS时未覆盖的模板将无法被 Django 找到槽名称不匹配命名槽必须与元素模板中{% slot 名称 %}一一对应拼写错误时内容会被静默忽略或落入default槽fields.html与field.html的关系默认fields.html直接渲染{{ form.as_p }}此时覆盖field.html不会生效只有重写fields.html逐字段渲染后field.html才参与渲染布局特化模板的命名必须形如元素名__entrance.html/元素名__manage.html且放在allauth/elements/目录下否则不会命中布局特化逻辑。6.3 消息、国际化与可访问性内置布局如 base.html默认在 body 顶部渲染 messages 列表Bootstrap 示例则用{% element alert %}将其升级为带语义的 alert 组件。模板普遍使用{% trans %}/{% translate %}处理国际化文案仓库在 allauth/locale 下提供了 40 语言的翻译覆盖模板时请沿用这些标签避免硬编码用户可见文案。结语django-allauth 的模板体系把内容与外观解耦到了极致内容模板只关心语义{% element h1 %}、{% slot body %}外观全部收敛到 allauth/templates/allauth/layouts 与 allauth/templates/allauth/elements 这两个目录。结合仓库自带的 Bootstrap 示例项目 与 templatetag 源码你可以用最小的覆盖成本为登录、注册、邮箱管理、密码重置、MFA、社交账号连接等全部页面快速统一品牌观感并在需要时平滑升级到逐模板深度定制。赞分享后端认证鉴权身份认证【免费下载链接】django-allauthIntegrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication. Mirror of https://codeberg.org/allauth/django-allauth/项目地址https://gitcode.com/gh_mirrors/dj/django-allauth点击查看免费下载相关推荐Authelia 通知邮件模板完全指南从内置模板到自定义覆盖Authelia 通知邮件模板完全指南从内置模板到自定义覆盖 Authelia 通过一套基于 Go text/template / html/template后端认证鉴权单点登录身份认证应用安全django-allauth 邮件发送定制指南模板覆盖、HTML 邮件与 send_mail 扩展django allauth 邮件发送定制指南模板覆盖、HTML 邮件与 send_mail 扩展 导读 django allauth 在密码找回、邮箱确认、后端认证鉴权身份认证Pixelle-Video 视频模板开发完全指南从内置模板到自定义 HTML 模板Pixelle Video 视频模板开发完全指南从内置模板到自定义 HTML 模板 本指南系统讲解 Pixelle VideoAI 全自动短视频引擎中视频人工智能AI 应用音视频媒体生成上一篇Bazel 规则性能优化实战depset、命令行参数与内存剖析完全指南下一篇Nx 工作区中 Next.js 15 升级到 Next.js 16 的完整迁移指南基于 Nx 22.2 自动化迁移指令的实战解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
StoryDiffusion AI漫画生成指南:三步跑通出整套角色一致漫画 StoryDiffusion AI漫画生成指南:三步跑通出整套角色一致漫画 【免费下载链接】StoryDiffusion Accepted as [NeurIPS 2024] Spotlight Presentation Paper 项目地址: https://gitcode.com/GitHub_Trending/st/StoryDiffusion
StoryDiffusion是一款开源的AI漫… · 2026/9/24 17:22:35
Dopamine 经验回放机制深度解析:circular_replay_buffer 模块源码与实战指南 机器学习深度学习 【免费下载链接】dopamine Dopamine is a research framework for fast prototyping of reinforcement learning algorithms. 项目地址: https://gitcode.com/gh_mirrors/do/dopamine 点击查看 免费下载 导读
dopamine.tf.replay_memory.circul… · 2026/9/24 17:22:27
GEO服务商能力构成全景:七种定位类型与企业匹配逻辑 2026年,AI搜索正在改变品牌可见性的竞争方式。企业决策者在获取行业信息时,越来越多地直接向AI提问并采纳答案,这个变化使得"品牌是否出现在AI的答案里"成为一个具体问题。市场上的GEO服务商数量在一年内明显增长,类型也… · 2026/9/24 17:22:27
云原生架构-服务网格 一、服务网格本质
服务网格的本质,是把微服务之间通信的“脏活累活”——重试、加密、监控、限流——从每个服务的业务代码里抽出来,交给一个统一的、独立的基础设施层去干。业务代码只关心业务逻辑,通信治理由网格统一负责。
在没有服务网格… · 2026/9/24 17:54:09
系统分析师之信息化基础知识 知识点:信息工程方法信息工程是面向企业计算机信息系统建设,以数据为中心的开发方法。信息工程方法认为,与企业的信息系统密切相关的三要素是企业的各种信息、企业的业务过程和企业采用的信息技术。信息工程自上而下地将整个信息系统的开发过… · 2026/9/24 17:54:02
Spring AI 模型 API 使用指南:从版本选择到聊天模型实战 阅读 Spring 英文 AI 文档 和 中文文档,基于官方文档与学习资料,整理了一份 AI 模型 API 的使用指南,带你从零上手 Spring AI。
1. 版本选择
Spring AI 版本Spring Boot 版本Java 版本Spring AI 1.1.xSpring Boot 3.5.xJava 17
版本阶段排序… · 2026/9/24 17:54:02
2026 年了,AI Agent 框架到底怎么选?一张表说清主流方案 2026 年了,AI Agent 框架到底怎么选?一张表说清主流方案摘要:别再收藏第 11 篇框架对比了。本文按「单 Agent 快速上手 / 多 Agent 编排 / 低代码接入」三个真实场景分档,一张表说清 LangChain、LangGraph、AutoGen、CrewAI、Dify… · 2026/9/24 17:53:55
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44