开发者

Django - routing to non-django script? (e.g. simple WSGI/CGI application)

How (if it is possible) can set up a route in Django that would point a certain url to a non-django script? E.g. I'd l开发者_高级运维ike to have /independent handled by a very simple CGI script such as this one:

import os

print 'Status: 200 OK'
print 'Content-type: text/html'
print
for key, value in os.environ.items():
    print key, ': ', value, '<br/>'

I'm not a Django user (yet, I.. think, it's upon me) and just need a way to hack this little detour into an application. So: is this possible? If yes, how?


If you have permissions to change your Apache conf, you can just add a line above the bit that handles Django. (Assuming you run your Django via WSGI.) Mine is something like

<Directory "/cgi-bin/">
    Options +ExecCGI
    AddHandler cgi-script .cgi .py
</Directory>

ScriptAlias /cgi-bin/ /path/to/cgi/dir/

...

WSGIScriptAlias / /path/to/django/site/django.wsgi

<Directory /path/to/django/site>
Order deny,allow
Allow from all
</Directory>


Not directly. All Django urls have to go to a Django view, a callable which accepts a request and returns a response.

You can though return a redirect[1] to an arbitrary urls. So you should be able to write a very simple wrapper view to do what you want.

[1] https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#examples


Another possibility to the ones mentioned by Valkyrie and amjoconn is to handle it in your .htaccess file or similar server setup. For example, on my WebFaction account, I have Django handling everything except /media/ and /downloads/. Those two directories are served directly by the nginx server.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜