创建多语言django应用程序的简单方法。

django-base-locale的Python项目详细描述


django基本语言环境

创建多语言django应用程序的简单方法。

1.安装软件包:

pip install django-base-locale

2.在已安装的应用程序中注册应用程序是您的设置。py:

INSTALLED_APPS = [
    ...
    'base_locale.apps.BaseLocaleConfig',
    ...
]

3.使用模型语言环境创建模型:

frombase_locale.modelsimportBaseModel,BaseModelLocaleclassExample(BaseModel):passclassExampleLocale(BaseModelLocale):pass

基本url.py文件:

from base_locale.urls import include_locale_urls

from example.urls import urlpatterns as example_urls


app_urls = [
    *example_urls,
]

urlpatterns = [
    ...,
    path('', include_locale_urls(app_urls)),
    """
    # In base_locale/urls.py
    def include_locale_urls(urls):
        return include([ 
            re_path(r'^(?P<language>[a-z]{2})/', include(urls)),
            path('', include(urls)),
        ])
    """
]

如何使用

视图.py

我们创建类BaseLoCalEntEnter(CONTROXMIXIN)。

from django.views.generic import DetailView

from base_locale.views import BaseLocaleContext


class ExampleView(BaseLocaleContext, DetailView):
    model = Example
    template_name = 'template.html'
    context_object_name = 'example'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        """
        Now context have instance language, all languages and path with out current language slug.
            context['language']
            context['languages']
            context['path'](form request path '/ru/...' replace language slug)

        context['example'] have methods:
            property locales
                Return all locales
            property locale_default
                Use in admin panel, for display locale instance
            get_locale
                Need argument language
                Return Locale instance by language
                context['example_locale'] = context['example'].get_locale(context['language'])
        """
        return context
模板.html

从instance load base_locale_extras获取当前语言环境

{% load base_locale_extras %}
{% bl_locale example as example_locale %}
    Now we use the locale object.
    {{ example_locale.language.code }}
    Two ways for use example instance:
    1. {{ example.pk }}
    2. {{ example_locale.base.pk }}
{% end_bl_locale %}
如何创建页面翻译链接:
{% for lang in languages %}
    <a href="{% bl_trans_url lang %}">lang.code</a>
{% endfor %}
{# or #}
{% for lang in languages %}
    <a href="{% bl_trans_url lang path %}">lang.code</a>
{% endfor %}

路径不是必需的。路径是request.path,没有语言代码。

如何创建页面区域设置链接:
{% load base_locale_extras %}
<a href="{% bl_url '...' %}"></a>
{# or #}
<a href="{% bl_url '...' *args **kwargs %}"></a>

在settings.py中注册标签

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            ...
            'builtins': [
                'base_locale.templatetags.base_locale_extras',
            ]  
        },
    },
]

模型参考

Base_Locale应用程序具有修饰符django元类,并为BaseModelLocale使用新的元类。 新的元类是basemodel的自动生成外键。见How to use。 要从BaseModelLocale访问BaseModel,请使用属性“base”。

基本模型具有属性:

  • 属性locales:返回所有locale。
  • 属性locale_default:return locale by language_u_u is_default为true。
  • get_locale(language):按语言返回语言环境。

BaseModelLocale具有以下属性:

  • 属性基:返回basemodel的实例foreignkey。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将cassandra中的行数据转换为与列相关的嵌套json   java如何使用jcr XPath在jcr:content/@jcr:data中搜索?   java在使用openCV进行安卓开发时如何利用手机的广角镜头   java解析扩展了接口,结束了一个潜在的无限循环   位置服务的@Override方法中存在java Android应用程序错误   java本地线程的用途和需求是什么   具有左右子访问的java节点树遍历   java验证JsonWebToken签名   JUL日志处理程序中的java日志记录   嵌入式Java读取给定时间段的串行数据。   java有没有办法从多个URL获取多个图像?   java线程通过等待intent阻止自己发送intent   java Spring MVC解析多部分内容请求   java JPA/Hibernate静态元模型属性未填充NullPointerException   java格式错误的字符(需要引号,得到I)~正在处理   java为什么PrintWriter对象抛出FileNotFoundException?   java Neo4j未正确保存标签   java IE不加载图像