我的电子邮件链接无法访问正确的路径

时间:2019-02-21 13:02:57

标签: django nginx django-urls

我有一个关于我的django settingsnginx的问题,以便显示Django视图生成的电子邮件中收到的下载链接。

1-上下文

电子邮件发送部分工作正常。我可以收到这个。在这封电子邮件中,我创建了一个链接,该链接可让您下载存储在MEDIA文件夹中的文件。

我的问题是有关在与localhost兼容的电子邮件中生成的URL,但在我的测试环境中没有。

2-我在本地环境中的代码

为了建立我的下载链接,我通过以下方式选择了protocoldomain

url = self.request.build_absolute_uri(reverse('home'))

然后,在我的消息中,我创建了这样的链接:

<a href="{{ url }}{% url '<my app>:export_download' token=token %}">Download link to your export file</a>

在本地,它给了我:

http://localhost:8000//download_export/<my_file>/

如您所见,我生成的网址中有一个双斜杠,这会导致错误。 我用:

解决了这个问题
url = request.build_absolute_uri('/').strip("/")

urls.py文件如下:

urlpatterns = [
    url(r'^home$', HomeView.as_view(), name='home'),
    ...
    url(r'^download_export/(?P<token>.*)/$', ExportDownloadView.as_view(), name='export_download'),
]

3-我在测试环境中的代码

在这种环境下,我使用nginx作为Web服务器。该应用程序可从以下网站获得:https://subdomain.domain.fr/dev3/<app_name>/home

nginx.conf看起来像:

location /dev3/<app_name> {
    include uwsgi_params;
    uwsgi_param SCRIPT_NAME /dev3/<app_name>;
    uwsgi_pass unix://var/run/uwsgi/<app_name>.sock;

当我访问从测试环境发送的生成的下载文件时,它使我可以访问:

https://subdomain.domain.fr/download_export/<my_file>而不是https://subdomain.domain.fr/dev3/<app_name>/download_export/<my_file>

它错过了什么?如何添加这部分/dev3/<app_name>?默认情况下,所有其他URL都访问https://subdomain.domain.fr/dev3/<app_name>/something,但不能访问我生成的链接。

谢谢

编辑:

在我的uwsgi.ini文件中,这两行都包含:

mount = /dev3/%n=main.wsgi:application
manage-script-name=true

所以它应该工作

1 个答案:

答案 0 :(得分:0)

您应该在登台环境中的settings.py中检查media_root。 Here's a great article关于在Django中提供可能有用的媒体文件。