我正在将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很新,所以如果有一个邪恶的简单解决方案我道歉。任何建议将不胜感激!
答案 0 :(得分:1)
问题是您的网址以href属性中的/report
开头。以/
开头意味着它应该相对于域的根目录。我相信你需要改变的是如何配置Django站点框架,看起来this question有答案。
此外,您应该在模板中使用url tag,而不是在锚标记中对网址进行硬编码。