我在Django项目中有2种语言。基数是site / pl /,第二个是site / en。 header.html中还有2个按钮可以切换语言(在url中添加前缀)。字符串翻译工作正常。我的问题是: 1.当我在语言之间切换(单击按钮)时,我想加载主页,因为正确地知道它仅在我在主页时才起作用-因此,如果我移至任何子页面并单击语言按钮,它将重新加载同一页面(而非主页) 。 2.当我在语言之间切换时,我也想将子页面的URL更改为正确的名称。
我尝试了一些奇怪的方法来做到这一点:
<li><a href="{{baseurl}}">PL</a></li>
<li><a href="{{en_url}}">EN</a></li>
,然后在视图中:
def index(request, *args, **kwargs):
baseurl = '/'
en_url = baseurl + 'en'
return render(request, 'home.html', {'baseurl': baseurl, 'en_url': en_url})
但我认为这很糟糕。
这是我的代码:
views.py
def index(request, *args, **kwargs):
return render(request, 'home.html')
def about(request, *arg, **kwargs):
return render(request, 'about.html')
def offer(request, *arg, **kwargs):
return render(request, 'offer.html')
def contact(request, *arg, **kwargs):
return render(request, 'contact.html')
app urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('o-nas', views.about, name='about'),
path('oferta', views.offer, name='offer'),
path('kontakt', views.contact, name='contact'),
]
在header.html
中 <li><a href="{% url 'index' %}">PL</a></li>
<li><a href="{% url 'index' %}">EN</a></li>
项目urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.i18n import i18n_patterns
urlpatterns = [
path(r'^i18n/', include('django.conf.urls.i18n')),
path('admin/', admin.site.urls),
]
urlpatterns += i18n_patterns(
path('', include('pages.urls')),
prefix_default_language=True,
)
答案 0 :(得分:0)
我认为您缺少网址。我会做这样的事情。
观看次数
def index(request, *args, **kwargs):
return render(request, 'home.html')
def index_EN(request, *args, **kwargs):
return render(request, 'home_en.html')
不要忘记创建一个“ home_en.html”模板。 然后在网址中添加:
urlpatterns = [
path('', views.index, name='index'),
path('en/', views.index_EN, name='index_en'),
,然后在模板中可以使用:
<li><a href="{% url 'index' %}">PL</a></li>
<li><a href="{% url 'index_en' %}">EN</a></li>