相关疑难解决方法(0)

如何在Django中管理本地vs生产设置?

处理本地开发和生产服务器设置的推荐方法是什么?其中一些(如常量等)可以在两者中进行更改/访问,但其中一些(如静态文件的路径)需要保持不同,因此每次部署新代码时都不应覆盖它们.

目前,我正在添加所有常量settings.py.但每次我在本地更改一些常量,我必须将其复制到生产服务器并编辑文件以进行生产特定的更改...... :(

编辑:看起来这个问题没有标准答案,我接受了最流行的方法.

python deployment django

285
推荐指数
10
解决办法
9万
查看次数

Django在视图中获取静态文件URL

我正在使用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 django-views django-staticfiles

126
推荐指数
7
解决办法
6万
查看次数

如何获取Django中的服务器名称以获取完整的URL?

我正在使用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?

谢谢

django-templates

21
推荐指数
1
解决办法
2万
查看次数

get_absolute_url中的django full url

当我在模板中调用模型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

11
推荐指数
1
解决办法
2万
查看次数

带有 Nginx 的 Django 的 build_absolute_uri 中的本地主机

在生产中,我使用链 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),因此在我的情况下避免使用此函数不是解决方案。

django nginx docker

7
推荐指数
1
解决办法
1094
查看次数

Django如何指定基本网址

所以应该有一个非常基本的方法来做到这一点,但不幸的是我似乎无法找到它。

如何设置 Href 链接以指向“基本网站网址”+“链接”,而不是将链接添加到当前页面。

即如果我在 www.example.com/content1/

我希望搜索功能转到 www.example.com/search/

而不是 www.example.com/content1/search

我可以只指定“www.example.com/search/”,但是如果它的页面部署在本地,我最终会得到一堆指向不存在页面的链接,反之亦然。如何使用 DJango 指定基本托管 URL(无论服务器正在运行,无论是主机名、当前服务器 IP、本地主机等)。

html django

6
推荐指数
1
解决办法
1万
查看次数

从 Django REST Framework 中的 APIView 内部获取完整的请求 URL

我可以访问请求对象中的方法或属性,以完全按照客户端的请求返回 URL?包括查询参数?

request.build_absolute_uri在查看这个问题后进行了检查,但它只返回没有查询参数的 URL。

我需要 URL,因为我的 API 响应返回结果“下一页”的 URL。我可以从query_params属性构建它,但是这个视图需要很多查询参数,有些排除了其他参数,所以访问请求 url 会为我省去很多麻烦。

python django django-rest-framework

3
推荐指数
1
解决办法
1263
查看次数

django.contrib.sites.models.Site将example.com作为服务器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)

我错过了一些配置吗?

python django django-sites

2
推荐指数
1
解决办法
3771
查看次数