我有一个关于我的django settings
和nginx
的问题,以便显示Django视图生成的电子邮件中收到的下载链接。
1-上下文
电子邮件发送部分工作正常。我可以收到这个。在这封电子邮件中,我创建了一个链接,该链接可让您下载存储在MEDIA
文件夹中的文件。
我的问题是有关在与localhost兼容的电子邮件中生成的URL,但在我的测试环境中没有。
2-我在本地环境中的代码
为了建立我的下载链接,我通过以下方式选择了protocol
和domain
:
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
所以它应该工作
答案 0 :(得分:0)
您应该在登台环境中的settings.py中检查media_root。 Here's a great article关于在Django中提供可能有用的媒体文件。