Django在模板视图、上下文和设置中访问网站名称/url



(这感觉像是"最佳实践"类型的问题,如果这些不属于这里,很抱歉(

我正在建立一个具有用户注册和密码重置功能的网站,这两个功能都会向用户发送带有链接的电子邮件,点击以完成相应的过程。在测试暂存箱时,我使用了一个肮脏的变通方法来完成概念验证-在模板中硬编码网站地址(不用说,我想尽快解决这个问题。四处搜索,找到了django.contrib.sites的引用,这看起来是一个可能的解决方案,尽管有一件事让我很困扰——从技术上讲,只有一个站点,但有两个阶段,即阶段和生产。我不想逆流而行,可能会滥用"站点";,其中可能应用另一种解决方案。

然后,我考虑了另一种方法-将相应的URL添加到相应的settings.py文件中,我已经掌握了这些文件-一个用于本地,一个用于暂存,另一个用于产品。这里的问题可能很明显-我认为从模板中读取settings.pi是不合适的(或不可能的(,为了使解决方案尽可能简单,我使用了一些标准视图,这意味着我无法访问其中的代码,无法向上下文添加值。也许我应该推翻这些标准观点?只需调用"super",然后将我的自定义数据添加到上下文中?但我不知道这是不是一个正确的方法tbh。

第三种选择似乎是添加一个自定义上下文处理器来实现相同的目标,即使感兴趣的模板可以使用设置值。很抱歉有一个很长的问题";设计;不同种类

ok,所以它毕竟是一个错误的路径-我的模板中的{{domain}}不起作用(解析为"localhost"(的原因是nginx-config:中缺少一行

location / {
proxy_pass http://unix:/run/gunicorn.sock;
proxy_set_header Host $http_host;
}

(确切地说是proxy_set_header行(

我不能说我100%理解这里发生的事情,但至少现在我可以继续前进;最大的问题是这个{{domain}}指令来自哪里-无法判断从教程中复制的几个上下文处理器中的哪一个将其放入:

"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",

最新更新