接触到新的东西,python,django,postgres记录一下学习中遇见的一些新知识点。
1.django 多语言。
从AI搜到的结论,基本上是正确的。
在Django项目中实现多语言支持,主要是通过Django的国际化和本地化功能来完成。以下是一个简要的步骤指南:
1. **启用国际化**:首先,在项目的`settings.py`文件中,确保`USE_I18N`设置为`True`,这表示启用了国际化支持。此外,还需要添加`django.middleware.locale.LocaleMiddleware`到中间件列表中,位置应在`SessionMiddleware`之后。
2. **标记文本**:在你的Django应用中,需要将希望翻译的文本用`gettext`函数包裹起来。通常的做法是使用`_()`作为快捷方式。
3. **创建语言文件**:运行`django-admin makemessages -l <language_code>`命令来生成`.po`文件,其中`<language_code>`是你想要支持的语言代码(如`zh_Hans`代表简体中文)。这些文件位于每个应用的`locale/<language_code>/LC_MESSAGES/`目录下。
4. **翻译文本**:打开生成的`.po`文件,将里面的`msgstr`值填写为你希望显示的翻译文本。
5. **编译消息**:完成翻译后,运行`django-admin compilemessages`命令来编译`.po`文件为二进制格式的`.mo`文件,这样Django就可以读取它们了。
6. **设置语言偏好**:Django允许用户通过URL参数、cookie或浏览器设置自动选择语言。你可以在`settings.py`中配置默认语言和其他语言相关的设置。
7. **处理静态文件中的文本**:对于JavaScript文件中的文本,可以使用Django提供的`makemessages`工具的`-d djangojs`选项来提取需要翻译的字符串,并按照上述步骤进行翻译。
通过以上步骤,你可以让你的Django项目支持多语言,从而更好地服务于不同语言背景的用户。需要注意的是,良好的国际化实践还包括考虑日期、时间、数字格式等本地化问题。
AI之外,django-admin compilemessages 总是出错,因为在maxKB的工程中,用 python main.py compilemessages即可。
在源代码中获取的时候,就会获取对应的语言了。
至于用户请求则是在header里设置 accept-language:en-US 来实现。
请求来了之后会调用 def activate(language): 来激活对应的语言。
2.postgres的命令(也许mysql也有)
LPAD 左填充,对应的还有 RPAD
SELECT LPAD('abc', 5, '0') AS padded_string;
-- 结果: '00abc'
reverse 反转字符串
select reverse('abc') 返回 'cba'
SUBSTRING 提取字符串
select SUBSTRING('abc' FROM 1 FOR 1) 返回 'a'
::TEXT 强制类型转换符,转为 TEXT类型
jsonb_set 用于更新 JSONB 数据类型的字段中的特定部分。它允许你在不改变其他部分的情况下修改或添加 JSONB 数据中的键值对或数组元素
jsonb_set(target jsonb, path text[], new_value jsonb [, create_missing boolean])
jsonb_build_object 用于从一组键值对构建一个 JSONB 对象。它非常适用于需要动态生成 JSON 数据的场景,例如将查询结果转换为 JSON 格式或在插入和更新操作中创建复杂的 JSONB 结构
SELECT jsonb_build_object(
'name', 'Alice',
'age', 30,
'department', 'HR'
) AS employee_info;
COALESCE 用于返回其第一个非空(非 NULL)的表达式值。它可以帮助你处理数据中的缺失值,确保查询结果中不会出现 NULL 值,而是返回一个合理的默认值
COALESCE(expression1, expression2, ..., expressionN)
SELECT employee_id, COALESCE(phone_number, 'N/A') AS phone_number
FROM employees;
如果 phone_number 列的值为 NULL,则返回 'N/A';否则返回实际的电话号码。
这样就可以把空值显示为特定符号
CONCAT 适用于需要将多个字符串片段组合成一个完整字符串的场景。此外,PostgreSQL 还提供了 CONCAT_WS 函数,可以更方便地使用指定的分隔符连接字符串。