#10426 closed (fixed)
Add a description of language environment variales to "How to use Django with Apache and mod_python" doc page
Reported by: | daybreaker | Owned by: | Jacob |
---|---|---|---|
Component: | Documentation | Version: | 1.0 |
Severity: | Keywords: | i18n unicode utf-8 file path apache mod_python mod_wsgi language environment variable | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Hello, I'm a Korean user of Django.
I've suffered from some issues on unicode file paths on mod_python, and finally I found the rescue here.
When you're going to use non-ascii filenames in your Django project running on Apache mod_python, the environment value for LANG should be set properly so that Python's os and os.path module can handle unicode filenames with proper encoding. There was no problem when I run my project with the test server included in Django because the LANG environment variable of my user account was set properly, but on mod_python it wasn't.
I think the official documentation for deployment on mod_python (and maybe mod_wsgi also) should explain how to set the language environment variable properly, for example in this case, using /etc/apache2/envvars
.
Attachments (1)
Change History (12)
comment:1 by , 16 years ago
milestone: | 1.0.3 → 1.1 |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 16 years ago
comment:3 by , 16 years ago
I don't know much about mod_wsgi because I haven't used it, but one thing clear is that changing os.environ['LANG']
does not affect the behaviour of Python's os and os.path module on unicode path strings. Setting environment variable must be done before Python interpreter is initialized.
comment:4 by , 16 years ago
Owner: | changed from | to
---|
comment:5 by , 16 years ago
Status: | new → assigned |
---|
comment:6 by , 16 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
(In [10371]) Fixed a whole bunch of small docs typos, errors, and ommissions.
Fixes #8358, #8396, #8724, #9043, #9128, #9247, #9267, #9267, #9375, #9409, #9414, #9416, #9446, #9454, #9464, #9503, #9518, #9533, #9657, #9658, #9683, #9733, #9771, #9835, #9836, #9837, #9897, #9906, #9912, #9945, #9986, #9992, #10055, #10084, #10091, #10145, #10245, #10257, #10309, #10358, #10359, #10424, #10426, #10508, #10531, #10551, #10635, #10637, #10656, #10658, #10690, #10699, #19528.
Thanks to all the respective authors of those tickets.
comment:7 by , 16 years ago
Resolution: | fixed |
---|---|
Status: | closed → reopened |
Sorry Jacob but it seems this one hasn't been closed by this commit or I can't find where.
Documentation from http://code.djangoproject.com/wiki/django_apache_and_mod_wsgi#AdditionalTweaking is very useful when you hit this bug.
by , 16 years ago
Attachment: | patch_django_10426.diff added |
---|
My English is very approximative, please review :)
comment:8 by , 16 years ago
Has patch: | set |
---|
comment:9 by , 15 years ago
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
Not all Apache distributions have a envvars file. This is especially the case with Linux distributions which ignore the Apache Software Foundation (ASF) installation layout and use their own. Don't think Windows has it either, or whether they use same way of setting it anyway.
Whether one could set LANG or LC_LANG using os.environ in a WSGI script file for mod_wsgi would depend on whether they actually need to be seen during Python initialisation or only when files are first loaded by or for Django.
If they must be set before Python is initialised then it may be better to have a configuration directive for mod_wsgi can set it. This does get tricky though as embedded mode of mod_wsgi shares processes with other Apache modules, eg., PHP, so it can be anti social to be overriding these. Also, different Django instances running in different daemon mode processes may need different language settings and so setting it once before Python initialised may not work anyway so definitely need a different way.
Thus, how does LANG and LC_LANG come into play? For mod_wsgi at least, can't they just be set using os.environ in the start of the WSGI script before Django is loaded?
Can more detail about the original problem being addressed perhaps be added here so can suggest what would be the best approach to getting around it.