장고 localeURL는 WSGIScriptAlias은 PREFIX
소개 내가 localeURL 사용에 대한 질문이 있나요/때. 다 같이 URL에 나를 위해 좋은 작품 : 나는 주소 표시 줄에 http://www.example.com/을 입력 할 경우, 예를 들어 http://www.example.com/EN/에서 제대로집니다 http://www.example.com/
. 내가보기 change_locale를 사용하는 경우
, 모든 권리 (예 : 변경 www.example.com/ 은/www.example.com/ 에/ 도중 FR)도 있습니다.
문제
하지만 mod_wsgi에와 서버로 내 응용 프로그램 사용 아파치.
WSGIScriptAlias /MY_PREFIX /path/to/django/app/apache/django.wsgi
이 같은 URL을 제공합니다 :는 httpd.conf 스크립트는이 줄을 포함 http://www.example.com/en/에
http://www.example.com/MY_PREFIX/
- 내가 주소 표시 줄에 http://www.example.com/MY_PREFIX/을 입력하면 ADRESS가 회전을 할 때 예상되는 결과는해야 be http://www.example.com/MY_PREFIX/en/
change_locale보기에서 같은 문제가 발생했습니다. 나는이 접두사 (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
을, 내가 제대로 언어를 변경할 수 있어요,하지만 난 그 오른쪽 방법입니다 확실하지 않다 물건을.
질문
-
우리가 여기 (변수를 사용하여 파이썬 측에 필요합니까, 당신은/접두사 (예 : "/ 블로그")로 WSGIScriptAlias를 사용을 httpd.conf에서,
settings.SERVER_PREFIX) WSGIScriptAlias와 일치합니까? 나는 MEDIA_URL과 다른 것들을 위해 그것을 사용하지만 어쩌면 거기에 "파이썬"측면에서 이것을 관리하지 않고 "자동"작업을 할 수있는 몇 가지 구성이 있습니다
이 사용자 정의보기 (change_locale)가 있다고 생각합니까? 이 문제를 올바르게 관리하는 방법은 무엇입니까? 아니면 1과 같이 어떤 종류의 자동 재능이 있습니까?
주소 표시 줄에 주소 (http://www.example.com/MY_PREFIX/)를 입력해도 문제가 해결되지 않습니다. 커스터마이즈가가는 길이라면 이것도 바꿀 것입니다. 그러나 더 나은 해결책이 있다고 생각합니다!기본적으로
아이디어의 장고가 접두사WSGIScriptAliasMatch ^/MY_PREFIX(/.*)?$ /path/to/django/app/apache/django.wsgi$1
이 없다는 것을 생각하게하지만 당신은 확실히 장고가를 방출 할 필요가 :
localeURL 코드 저장소와 관련이있는 것 같습니다. http://bitbucket.org/carljm/django-localeurl/issue/10/wrong-redirection-url –