处理本地开发和生产服务器设置的推荐方法是什么?其中一些(如常量等)可以在两者中进行更改/访问,但其中一些(如静态文件的路径)需要保持不同,因此每次部署新代码时都不应覆盖它们.
目前,我正在添加所有常量settings.py.但每次我在本地更改一些常量,我必须将其复制到生产服务器并编辑文件以进行生产特定的更改...... :(
编辑:看起来这个问题没有标准答案,我接受了最流行的方法.
我正在使用reportlab pdfgen来创建PDF.在PDF中有一个由...创建的图像drawImage.为此,我要么需要图像的URL,要么需要视图中图像的路径.我设法建立了URL但是如何获得图像的本地路径?
我如何获得URL:
prefix = 'https://' if request.is_secure() else 'http://'
image_url = prefix + request.get_host() + STATIC_URL + "images/logo_80.png"
Run Code Online (Sandbox Code Playgroud) 我正在使用django模板来创建电子邮件.我做这样的事情:
msg_html = render_to_string('email/%s.html' % template_name, context)
msg = EmailMultiAlternatives(subject, msg_text, from_email, to_list)
msg.attach_alternative(msg_html, "text/html")
msg.content_subtype = "html"
msg.send()
Run Code Online (Sandbox Code Playgroud)
我的模板使用命名的url模式,如下所示:{%url url_name parameter%}
哪个工作正常,除了它将呈现相对URL,如:/ app_name/url_node/parameter
通常这就足够了,但由于这是一封电子邮件,我真的需要它是一个完整的URL - 服务器名称前缀,如: http:// localhost:8000/app_name/url_node/parameter.
我怎样才能做到这一点?如何动态获取服务器名称?(我不想对它进行硬编码).
另一种询问方式:如何获取HttpServletRequest.getContextPath()ala Java,而不是Django/Python?
谢谢
当我在模板中调用模型get_absolute_url方法时,我希望有一个绝对/完整的URL.在我的入门模型我有以下:
def get_absolute_url(self):
return ('blog_entry_detail', (), { 'year': self.pub_date.strftime("%Y"),
'month': self.pub_date.strftime("%b").lower(),
'day': self.pub_date.strftime("%d"),
'slug': self.slug })
get_absolute_url = models.permalink(get_absolute_url)
Run Code Online (Sandbox Code Playgroud)
在我的模板文件中:
{{object.get_absolute_url}}
Run Code Online (Sandbox Code Playgroud)
我想输出前缀为'http://www.example.com'的网址
我想使用下面的行来获取当前的域名,但我不知道我会把它放在哪里.
from django.contrib.sites.models import Site
current_site = Site.objects.get_current().domain
Run Code Online (Sandbox Code Playgroud) 在生产中,我使用链 Django - UWSGI - Docker - Nxing。UWSGI使用50012端口,Ngxin配置为:
proxy_pass http://localhost:50012;
Run Code Online (Sandbox Code Playgroud)
Django 进程认为它的主机localhost:50012不是 Nginx 监听的域。所以当函数build_absolute_uri被调用时,localhost:50012不是我的域。有没有办法让 Django 在build_absolute_uri被调用时使用自定义主机名?
注意:在某些build_absolute_uri隐式调用的库中(如social-django或 example),因此在我的情况下避免使用此函数不是解决方案。
所以应该有一个非常基本的方法来做到这一点,但不幸的是我似乎无法找到它。
如何设置 Href 链接以指向“基本网站网址”+“链接”,而不是将链接添加到当前页面。
即如果我在 www.example.com/content1/
我希望搜索功能转到 www.example.com/search/
而不是 www.example.com/content1/search
我可以只指定“www.example.com/search/”,但是如果它的页面部署在本地,我最终会得到一堆指向不存在页面的链接,反之亦然。如何使用 DJango 指定基本托管 URL(无论服务器正在运行,无论是主机名、当前服务器 IP、本地主机等)。
我可以访问请求对象中的方法或属性,以完全按照客户端的请求返回 URL?包括查询参数?
我request.build_absolute_uri在查看这个问题后进行了检查,但它只返回没有查询参数的 URL。
我需要 URL,因为我的 API 响应返回结果“下一页”的 URL。我可以从query_params属性构建它,但是这个视图需要很多查询参数,有些排除了其他参数,所以访问请求 url 会为我省去很多麻烦。
我想在django中获取服务器URL.所以我经历了stackoverflow并发现为了做到这一点,我将不得不做以下事情:
>>> from django.contrib.sites.models import Site
>>> mysite = Site.objects.get_current()
Run Code Online (Sandbox Code Playgroud)
我python manage.py shell在生产服务器上尝试了上面的内容,并期望mysite给我生产服务器的URL,但它给了example.com
>>> mysite
<Site: example.com>
Run Code Online (Sandbox Code Playgroud)
我错过了一些配置吗?