diff --git a/src/DjangoBlog-master/oauth/templatetags/oauth_tags.py b/src/DjangoBlog-master/oauth/templatetags/oauth_tags.py index 7b687d5..44877b6 100644 --- a/src/DjangoBlog-master/oauth/templatetags/oauth_tags.py +++ b/src/DjangoBlog-master/oauth/templatetags/oauth_tags.py @@ -1,22 +1,36 @@ +# 导入Django模板相关模块和URL反转工具 from django import template from django.urls import reverse +# 导入获取OAuth应用列表的工具函数 from oauth.oauthmanager import get_oauth_apps +# 注册一个模板库实例,用于注册自定义模板标签 register = template.Library() +# 注册一个包含型模板标签(inclusion tag),指定模板文件为'oauth/oauth_applications.html' +# 该标签会将处理结果传递给指定模板,再将模板渲染后的内容嵌入到调用位置 @register.inclusion_tag('oauth/oauth_applications.html') def load_oauth_applications(request): + # 获取所有已配置的OAuth应用(如微博、GitHub等) applications = get_oauth_apps() + if applications: + # 生成OAuth登录的基础URL(通过reverse反转'oauth:oauthlogin'命名URL) baseurl = reverse('oauth:oauthlogin') + # 获取当前请求的完整路径(用于登录后跳转回原页面) path = request.get_full_path() - + + # 处理应用列表:将每个应用转换为(图标名称, 登录URL)的元组 + # 登录URL格式为"基础URL?type=应用图标名&next_url=当前路径" apps = list(map(lambda x: (x.ICON_NAME, '{baseurl}?type={type}&next_url={next}'.format( baseurl=baseurl, type=x.ICON_NAME, next=path)), applications)) else: + # 若没有配置OAuth应用,返回空列表 apps = [] + + # 将处理后的应用列表传递给模板 return { 'apps': apps - } + } \ No newline at end of file