Перенаправление перевода Django обратно на текущую страницу

#python #django #localization #internationalization #translation

#python #django #локализация #интернационализация #перевод

Вопрос:

Как перенаправить обратно на текущую страницу. На моем сайте я реализую два языка: «en» и «fa», прямо сейчас он работает, но не перенаправляет на текущую страницу, например docs.djangoproject.com вместо этого он перенаправляет меня на домашний ‘localhost:8000/fa/’ или /en

вот код: для шаблона hearders.py

 <li class="dropdown default-dropdown">
    <form action="{% url 'selectlanguage' %}" method="POST">{% csrf_token %}
        <input name="next" type="hidden" value="{{ redirect_to }}">
        <select name="language">
            {% get_current_language as LANGUAGE_CODE %}
            {% get_available_languages as LANGUAGES %}
            {% get_language_info_list for LANGUAGES as languages %}
            {% for language in languages %}
                <option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected{% endif %}>
                    {{ language.name_local }} ({{ language.code }})
                </option>
            {% endfor %}
        </select>
        <input type="submit" value="{% trans 'Go' %}">
    </form>
</li>
 

код для urls.py является:

     path('selectlanguage', views.selectlanguage, name='selectlanguage'),
 

и для views.py является:

 
def selectlanguage(request):
    if request.method == 'POST':  # check post
        cur_language = translation.get_language()
        lasturl= request.META.get('HTTP_REFERER')
        lang = request.POST['language']
        translation.activate(lang)
        request.session[translation.LANGUAGE_SESSION_KEY]=lang
        #return HttpResponse(lang)
        return HttpResponseRedirect(lang)
 

Комментарии:

1. Есть ли какая-либо причина, по которой вы не можете использовать встроенные языковые URL-адреса?

2. Спасибо за ваш комментарий @MichaelLindsay. на самом деле я впервые работаю с переводом, есть ли какой-нибудь трюк для реализации такой системы, которую я хочу? Заранее спасибо.

Ответ №1:

вы перенесли URL-адреса в i18n_patterns?

 from django.conf.urls.i18n import i18n_patterns

urlpatterns  = i18n_patterns(
    path('about/', about_views.main, name='about'),
    path('news/', include(news_patterns, namespace='news')),
)
 

Комментарии:

1. Спасибо за ваш ответ, Майкл Линдсей, да, я переношу URL-адреса в i18n_patterns. на самом деле все работает, и я могу изменить язык, но просто он не перенаправляет меня обратно на текущую страницу.

2. ах, я вижу, я в конечном итоге использую javascript для изменения URL-адреса. Это не django, но он позволяет избежать перенаправления get .