我试图避免必须以某种方式添加一个 context_processor 来将我的项目的基本 url 添加到我在所有模板中使用的每个 url。
我的 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 变量在他们的模板中还是有更好的方法?