Linux Ubuntu
Python 3.8.10
Django 4.0.4
Eсть список ссылок, каждая из котороых должна переключать на определенный язык сайт. Нашёл похожее решение этой задачи, но у меня возникает ошибка: страница не найдена.
Python 3.8.10
Django 4.0.4
Eсть список ссылок, каждая из котороых должна переключать на определенный язык сайт. Нашёл похожее решение этой задачи, но у меня возникает ошибка: страница не найдена.
Python:
views.py
def lang(request, lang_code):
next = request.POST.get('next', request.GET.get('next'))
if (next or not request.headers.get('x-requested-with')) and not
url_has_allowed_host_and_scheme(url=next, allowed_hosts=request.get_host()):
next = request.META.get('HTTP_REFERER')
if next:
next = quote_etag(next) # HTTP_REFERER may be encoded.
if not url_has_allowed_host_and_scheme(url=next,
allowed_hosts=request.get_host()):
next = '/'
response = HttpResponseRedirect(next) if next else
HttpResponse(status=204)
if lang_code and check_for_language(lang_code):
if next:
for code_tuple in settings.LANGUAGES:
settings_lang_code = "/" + code_tuple[0]
parsed = urlsplit(next)
if parsed.path.startswith(settings_lang_code):
path = re.sub('^' + settings_lang_code, '', parsed.path)
next = urlunsplit((parsed.scheme, parsed.netloc, path,
parsed.query, parsed.fragment))
response = HttpResponseRedirect(next)
if hasattr(request, 'session'):
request.session[LANGUAGE_SESSION_KEY] = lang_code
else:
response.set_cookie(
settings.LANGUAGE_COOKIE_NAME, lang_code,
max_age=settings.LANGUAGE_COOKIE_AGE,
path=settings.LANGUAGE_COOKIE_PATH,
domain=settings.LANGUAGE_COOKIE_DOMAIN,
)
return response
html
<ul class="dropdown__catalog">
<li class="active"><a href="{% url 'forum:lang' 'en' %}"><i></i>English</a></li>
<li><a href="{% url 'forum:lang' 'es' %}"><i></i>Espanol</a></li>
<li><a href="{% url 'forum:lang' 'pt' %}"><i></i>Portugues</a></li>
<li><a href="{% url 'forum:lang' 'chi' %}"><i></i>Chinese</a></li>
</ul>
urls.py
urlpatterns = format_suffix_patterns([
path('', views.TopicListView.as_view(), name='main'),
path('single-topic/', views.SingleTopicPageView.as_view(), name='single-topic'),
path('search/', Search.as_view(), name='search_results'),
path('search/<category_id>/', topic_view, name='topic_view'),
path('<slug:slug>/', views.TopicDetailView.as_view(), name='topic_detail'),
path('r<slug:slug>/<category_id>/', views.CategoryDetailView.as_view(),
name='category_detail'),
path("list/1/", views.TopicViewSet.as_view({'get': 'list'})),
path("<intk>/", views.TopicViewSet.as_view({'get': 'retrieve'})),
path('1/new_topics/', modal_topic, name='modal_topic'),
path('2/latest_topic/', modal_latest_topic, name='modal_latest_topic'),
path('3/forum_rules/', views.ForumRulesView.as_view(), name='forum_rules'),
path('4/about_us/', views.AboutUsView.as_view(), name='about_us'),
path('5/email_send/', send_email, name='send_email'),
path('6/team', TeamView.as_view(), name='the_team'),
path('lang/<lang_code>/', views.lang, name='lang'),
])
Последнее редактирование: