0

我正在将 django 站点移至新服务器。在旧服务器上,django 站点的访问方式类似于 mysite.com/ ,但现在,我们想通过 mysite.com/mysite 访问它,并让 mysite.com 处理其他事情。我对 apache 进行了以下更改,如下所示:

    WSGIDaemonProcess mysite processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup mysite
    WSGIScriptAlias /mysite /srv/www/django.wsgi
    #WSGIScriptAlias /mysite /srv/www/django.wsgi  #previous config         

    <Directory /srv/www/mysite/mysite >
            Order allow,deny
            Allow from all
    </Directory>

    Alias /site_media "/srv/www/mysite/site_media/"
    Alias /admin_media "/srv/www/mysite/admin_media/"

这似乎工作得很好——将浏览器指向 mysite.com/unity/admin 允许我正确访问管理页面,并正确查看相应的应用程序。然而,任何使用自定义模板的东西似乎都是半生不熟的。例如,下面的模板中有一个条目,如下所示:

 {% ifcodable cl.model %}<li><a href="/report/{{ app_label }}/{{ cl.opts.verbose_name }}" class="link">Coding Report</a></li>{% endifcodable %}

这会将页面重定向到

http://mysite.com/report/texas/texas

相对于

http://mysite.com/mysite/report/texas/texas

我不确定模板是否设置不正确,或者它是否与新别名有关。我的 urls.py 看起来像这样:

from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
    .....
    (r'^report/([a-zA-Z]+?)/([a-zA-Z]+?)/(overall|\d+)/{0,1}$', 'mysite.k.views.performance'),
    (r'^report/(.+?)/(.+?)/{0,1}$', 'mysite.k.views.report'),
    .....

我的 django.wsgi 文件如下所示:

import os,sys
sys.path.append('/srv/www/mysite')
sys.path.append('/srv/www/mysite/mysite')
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

我不知道应该做些什么来纠正这个问题。我对 django 很陌生,所以如果有一个邪恶的简单解决方案,我深表歉意。任何建议将不胜感激!

4

1 回答 1

1

问题是您的网址以/reporthref 属性开头。从一个/意味着它应该相对于您的域的根开始。我相信你需要改变的是 Django 站点框架的配置方式,看起来这个问题已经有了答案。

此外,您可能应该在模板中使用url 标签,而不是在锚标签中硬编码 url。

于 2012-06-13T15:46:59.537 回答