2015-04-16 26 views
0

没有处理我有一个Django的核心功能猴补丁,覆盖波浪符的默认enconig:修补Django的核心模块的功能是使用gunicorn

from django.utils import http 
http.original_urlquote = http.urlquote 
http.urlquote = lambda url, safe='~/': http.original_urlquote(url, safe) 

,它工作正常使用python manage.py runserver。我转到由django resolve()函数生成的正确url。 /user/nf~roj/改为/user/nf%7Eroj/

但是,一旦我通过gunicorn运行我的项目,此修补程序不会生效。

这种行为的可能原因是什么?

+0

monkeypatch在哪里完成? –

+0

它正好在'settings.py'中完成。 –

回答

0

问题是gunicorn本身在我的补丁之前导入了一个http.urlquote函数。

的解决方案是,如果你的Monkeypatching蟒蛇做到这一点

import django.core.urlresolvers 
from django.utils import http 
http.original_urlquote = http.urlquote 
django.core.urlresolvers.urlquote = http.urlquote = lambda url, safe='~/': http.original_urlquote(url, safe) 

非常有用的技巧。