如何在 Django 中获取 URL(带有协议和域)(无需请求)?

2024-05-06

我想在 cron 作业中发送邮件。邮件应包含 我的应用程序的链接。

在 cron 作业中,我没有请求对象,并且无法使用 request.build_absolute_uri()。

据我所知,网站框架可以在这里提供帮助。但没有给我协议(http vs https)?

我的应用程序是可重用的,有时托管在 http 网站上,有时托管在 https 网站上。

Update

我搜索了一种常见的 django 方式。可以创建自定义设置,但首选采用 django 标准的解决方案。


TL;DR: 没有任何“标准”“Django-ish”方法可以做到这一点,但框架提倡的 DRY 原则假设单个配置存储,因此自定义设置似乎是一个不错的方法。

默认情况下,Django 可以从单个实例提供任意数量的域,并且 HTTP 请求(更准确地说,它的HTTP_HOSTheader) 是 Django 用来确定当前主机的唯一东西。 由于您的 cron 作业显然不在 HTTP 周期之外,因此您应该将您的域存储在设置中的某个位置...

# settings.py
DEFAULT_DOMAIN = 'https://foobar.com'
# or, depending on your configuration:
DEFAULT_DOMAIN = 'https://{}'.format(ALLOWED_HOSTS[0])

...使用微型上下文处理器可以更轻松地处理模板:

# yourapp/context_processors.py
from django.conf import settings

def default_domain(request):
    return {'default_domain': settings.DEFAULT_DOMAIN}

...然后在您的电子邮件中使用它:

# yourapp/templates/email/body.html
<a href="{{ default_domain }}{% url 'target' %}">Click here</a>

或者,您可以使用sites框架,但如果您服务于单个域,那么基于设置的解决方案对我来说似乎更加简单和干净。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Django 中获取 URL(带有协议和域)(无需请求)? 的相关文章

随机推荐

  • Angular Xeditable 下拉菜单 e-ng-change 不起作用

    我在用着角度可编辑 http vitalets github io angular xeditable editable tableapi 我需要根据下拉列表的值更改文本字段的值 但它不起作用 你能告诉我为什么吗 谢谢 Html td sp
  • ASP.NET MVC - ValidateAntiForgeryToken 过期

    在网页中 我们提供一个超链接 GET 用户可以单击该超链接进行身份验证 Html ActionLink Please Login MyMethod MyController 这映射到以下返回视图的控制器方法 RequireHttps pub
  • 不在对象上下文中时使用 $this php

    我刚刚开始学习 php 中的 OOPS 我写了一个简单的程序来实现继承 当不在对象上下文中时 我收到 this 的致命错误 谁能解释一下这个错误 它是什么意思 这是我的代码
  • 空格键在 Excel VBA 编辑器中的行尾不起作用

    我将 Personal xlsb 移至新笔记本电脑 但遇到了一个奇怪的问题 空格键在行尾不起作用 除非它是完全空的行 示例 1 不起作用的示例 不工作 示例 2 工作示例 会工作 当我按空格键时 文本选择指针没有移动 但位置指示器在原始位置
  • C中的内存使用问题

    请帮忙 操作系统 Linux 其中 sleep 1000 中 此时 top 显示Linux任务 给我写了7 7 MEM使用 valgrind 未发现内存泄漏 我明白 写得正确 所有 malloc 结果都是 NULL 但是为什么这次 睡眠 我
  • 如何在 vb.net 中更改 DateTimePicker 的日期格式

    如何更改 vb net 中 DateTimePicker 的日期格式 以便日期以 dd mm 1990 格式显示 没有任何时间值 我尝试将格式更改为 短 虽然这提供了我需要的日期格式 但它不会删除时间 您需要将 DateTimePicker
  • 在 C# 中将“set”添加到接口的属性中

    我希望通过为该接口中的属性提供设置访问器来 扩展 该接口 界面看起来像这样 interface IUser string UserName get 我想要这样的东西 interface IMutableUser IUser string U
  • 是否可以将 SpaCy 安装到 Raspberry Pi 4 Raspbian Buster

    我一整天都在安装 SpaCy sudo pip install U spacy Looking in indexes https pypi org simple https www piwheels org simple Collectin
  • 删除 QComboBox“下拉”动画

    我正在使用 Qt 4 8 并且想在单击 QComboBox 时摆脱 下拉 动画 我也想稍微移动一下 到目前为止 我一直在考虑重新实现 showPopup 和 hidePopup 但不知道如何使其工作 此外 每次我尝试使用 CSS 进行移动或
  • 将一个文件写入.c中的另一个文件

    我有一个读取文件然后将其内容复制到另一个文件的代码 我需要使其仅复制每 20 个符号 然后跳过 10 个符号 然后再次跳过 20 个符号 依此类推 我必须使用 lseek 函数 但我不知道如何将所有这些放入循环中来执行此操作 main ar
  • “docker compose up”永远挂起(通常),即使使用 V2,尽管熵很高(Ubuntu)

    我遇到了问题docker compose up命令 因此 我最近创建了一个全新的 Ubuntu 操作系统安装 并且一直在设置我的开发环境 我已经安装了 Docker 并mostly一切似乎都运转良好 启动单个容器按预期工作 例如 docke
  • 尝试使用指向 ODBC DSN 的连接字符串时出现关键字不支持异常

    我为我的 Asp Net MVC 应用程序的数据库访问创建了一个 ODBC DSN 主要原因之一是它可以轻松地将数据库凭据 例如服务器地址 端口 用户名和密码 置于源代码控制之外 而不会妨碍我的发布能力 所以我将连接更改为DSN MyDSN
  • Request.Url.Port 给出错误的端口

    我的支持团队为我提供了一个 Live IP 例如http 201 121 152 168 68 现在在正常情况下你会认为68是端口 但是 当我执行 Request Host 时 我得到201 121 152 168当我执行 Request
  • 了解 Windows 8 上的文件何时发生更改

    我知道 FileSystemWatcher 类在 Windows 8 上不起作用 为什么在 Windows 7 上检测到 FileSystemWatcher 属性更改 而在 Windows 8 上检测不到 https stackoverfl
  • IE8 的透明 png 渲染在我的网站上很 FUBARed

    我刚刚下载了 IE8 完整版 这样我就可以测试我刚刚创建的网站 示例已删除 关注左侧边栏背景图像 它应该是一个重复的 1x1 半透明 png 图像 IE8将其渲染为渐变 当您尝试滚动窗口或将鼠标悬停在侧边栏上时 它会变得更加不稳定 我已经在
  • Seaborn 箱线图框从 Python 列表中分配自定义边缘颜色

    我正在尝试更改 Seaborn 箱线图中盒子的外观 我希望所有框都是透明的 并从列表中指定框边框 这是我正在使用的代码 import numpy as np import pandas as pd import seaborn as sns
  • 验证日期格式不起作用

    我在日期验证方面遇到问题 在我的视图中 我有一个 jQuery 日期选择器 我更改了格式yy mm dd to mm dd yy现在我收到客户端验证错误 例如 The value 02 25 2014 is not valid for Da
  • 对同一属性的 SPARQL 结果进行分组?

    我有以下 SPARQL 查询 PREFIX rdfs
  • equals 和 hashcode 的不同字段

    我同意这篇文章的声明在Java中重写equals和hashCode时应该考虑哪些问题 https stackoverflow com questions 27581 overriding equals and hashcode in jav
  • 如何在 Django 中获取 URL(带有协议和域)(无需请求)?

    我想在 cron 作业中发送邮件 邮件应包含 我的应用程序的链接 在 cron 作业中 我没有请求对象 并且无法使用 request build absolute uri 据我所知 网站框架可以在这里提供帮助 但没有给我协议 http vs