プロジェクトのベース URL をすべてのテンプレートで使用するすべての URL に追加するために、何らかの方法で context_processor を追加する必要がないようにしています。
私の django プロジェクトはサブディレクトリ (foo と呼びましょう) の下にあり、テンプレート内の多くの URL は次のようになります。
<a href='/somepath'>whatever</a>
これは、ドメインのルートでホストされているプロジェクトでは問題なく機能しますが、この場合、サブディレクトリ foo の下にいるため、URL は実際には www.example.com/somepath を指します。
興味深いのは、管理サイトが正常に機能することです。その URL はすべて foo/admin/... を指しています。
これに対する答えを見つけるために正しい用語を探していないのではないかと思います。
.htaccess
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ foo.fcgi/$1 [L]
.fcgi
#!/usr/bin/python
import sys, os
# Current Path
cwd = os.path.join( os.path.dirname( os.path.abspath( __file__ ) ) )
# Activate current virtualenv
activate_this = os.path.join( cwd, 'bin', 'activate_this.py' )
execfile( activate_this, dict( __file__ = activate_this ) )
# Add a custom Python path.
sys.path.insert( 0, os.path.join( cwd, 'foo' ) )
os.environ['DJANGO_SETTINGS_MODULE'] = 'foo.settings'
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
ほとんどの URL は {% url %} と FORCE_SCRIPT_NAME を使用して正しく動作させることができますが、urls.py に reverse() を使用するエントリがない URL については、それらのテンプレートの FORCE_SCRIPT_NAME 変数またはより良い方法はありますか?