小编jaa*_*ap3的帖子

Django:检测数据库后端

我在Django中做了一些需要同时处理sqlite和postgres的"额外"查询.这些查询的语法在后端之间有所不同,但我无法弄清楚我是否将查询发送到postgres或sqlite.

有没有办法获取当前的数据库适配器,以便我可以分支我的代码并为活动数据库服务器发送正确的查询?

database django backend detect

27
推荐指数
1
解决办法
7132
查看次数

在jinja模板中切换语言

我正在将多语言Django应用程序从Django的模板引擎迁移到Jinja2.在模板中,我目前使用Django的language模板标签在每个对象的基础上切换活动语言,即:

{% load i18n %}
<h1>{% trans 'Page title' %}</h1>
<ul>
{% for obj in object_list %}
{% language obj.language_code %}
    <li><a href="{{ obj.get_absolute_url }}">{% trans 'view' %}: {{ obj.title }}</a>
{% endlanguage %}
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)

我们也使用,i18n_patterns因此每个对象的URL也是特定于语言的.

我坚持如何将其转换为Jinja.我不能使用Django的i18n模板标签,也无法找到与Jinja等效的东西.

我也在看Babel来帮助从模板中提取消息.因此,首选适用于Babel和Django的解决方案.

django templates internationalization jinja2 babel

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

Python重新排序已排序的列表,因此最高值位于中间

我需要重新排序已排序的列表,因此"middle"元素是最高的数字.中间的数字是递增的,中间的数字是递减的.

我有以下工作解决方案,但感觉它可以更简单:

foo = range(7)
bar = [n for i, n in enumerate(foo) if n % 2 == len(foo) % 2]
bar += [n for n in reversed(foo) if n not in bar]
bar
[1, 3, 5, 6, 4, 2, 0]
Run Code Online (Sandbox Code Playgroud)

python sorting partitioning

5
推荐指数
1
解决办法
1148
查看次数

如何让Django Rest Framework将小数舍入到最大精度?

我有一个带有DecimalField的Django Rest Framework序列化程序

serializers.DecimalField(max_digits=9, decimal_places=6)
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试反序列化包含具有更高精度的十进制数据(即50.1234567),则序列化程序会引发ValidationError:

"Ensure that there are no more than 6 decimal places."
Run Code Online (Sandbox Code Playgroud)

如果最后一位数为0,甚至会发生这种情况.是否可以使串行器将给定值舍入到最大精度(即50.1234567到50.123457)?如果是这样怎么样?

decimal rounding django-rest-framework

4
推荐指数
1
解决办法
1337
查看次数

Django 条件模板标签库加载器

我正在开发一个 Django 应用程序,如果某些其他应用程序可用,它会提供具有可选功能的模板。

无法使用标准{% load %}Django 标签加载不可用的模板标签库。尝试这样做会导致TemplateSyntaxError.

有没有人想出解决这个问题的方法?IE 一个条件标签库加载器,所以我可以做这样的事情:

{% load_if_available app_tags %}

{% if_loaded app_tags %}{% endif %}

python django django-templates

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