WprowadzenieDjango localeURL gdy WSGIScriptAlias jest/PREFIKSÓW
mam pytanie o wykorzystaniu localeURL. Wszystko działa świetnie dla mnie url tak: http://www.example.com/
Gdybym wpisać http://www.example.com/ w pasku adresu, okazuje prawidłowo http://www.example.com/pl/ np.
Jeśli używam widok change_locale, to też w porządku (czyli zmiana www.example.com/ PL/w www.example.com/ fr /).
problemem
Ale mój wniosek użycie Apache jako serwer, z mod_wsgi. Skrypt httpd.conf zawiera wiersz:
WSGIScriptAlias /MY_PREFIX /path/to/django/app/apache/django.wsgi
który daje url tak:
http://www.example.com/MY_PREFIX/
- Gdybym wpisać http://www.example.com/MY_PREFIX/ w pasku adresu, wprowadzony adres zamienia http://www.example.com/en/ gdy oczekiwany wynik powinien być http://www.example.com/MY_PREFIX/en/
Ten sam problem wystąpił w widoku change_locale. I zmodyfikowany kod w celu zarządzania tego prefiksu (sklep w settings.SERVER_PREFIX):
def change_locale(request) :
"""
Redirect to a given url while changing the locale in the path
The url and the locale code need to be specified in the
request parameters.
O. Rochaix; Taken from localeURL view, and tuned to manage :
- SERVER_PREFIX from settings.py
"""
next = request.REQUEST.get('next', None)
if not next:
next = request.META.get('HTTP_REFERER', None)
if not next:
next = settings.SERVER_PREFIX + '/'
next = urlsplit(next).path
prefix = False
if settings.SERVER_PREFIX!="" and next.startswith(settings.SERVER_PREFIX) :
prefix = True
next = "/" + next.lstrip(settings.SERVER_PREFIX)
_, path = utils.strip_path (next)
if request.method == 'POST':
locale = request.POST.get('locale', None)
if locale and check_for_language(locale):
path = utils.locale_path(path, locale)
if prefix :
path = settings.SERVER_PREFIX + path
response = http.HttpResponseRedirect(path)
return response
z tego niestandardowego widoku, że jestem w stanie poprawnie zmienić język, ale nie jestem pewien, że to właściwa droga Robi coś.
Pytanie
gdy w httpd.conf użyć WSGIScriptAlias z/prefiksu (czyli "/ blog"), nie musimy na stronie Pythona użyć zmiennej (tutaj settings.SERVER_PREFIX), które pasują do WSGIScriptAlias? Używam go do MEDIA_URL i innych rzeczy, ale może jest jakaś konfiguracja do zrobienia, aby działało "automatycznie" bez konieczności zarządzania tym po stronie Pythona
Czy uważasz, że ten niestandardowy widok (change_locale) jest właściwy sposób zarządzania tym problemem? Czy jest jakiś rodzaj automagii jak na 1.?
Nie rozwiązuje problemu, jeśli wpisuję adres (http://www.example.com/MY_PREFIX/) w pasku adresu. Jeśli dostosowywanie jest do zrobienia, zmienię to również, ale myślę, że jest lepsze rozwiązanie!
Wydaje się być związany z tym problemem w repozytorium kodu localeURL: http://bitbucket.org/carljm/django-localeurl/issue/10/wrong-redirection-url –