我正在將django站點移到新服務器的過程中。在舊服務器上,django網站像mysite.com/一樣被訪問,但現在,我們希望通過mysite.com/mysite訪問它,並讓mysite.com處理其他事情。我已經做了以下修改apache和像這樣:將Django站點移動到另一個服務器 - WSGIScriptAlias導致問題
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相當陌生,所以如果有一個邪惡的簡單解決方案,我表示歉意。任何建議將不勝感激!
對於'url'標籤+1。如果你總是使用它,那麼URL將自動正確。 –
我看到之前列出的問題/答案,但答案並沒有真正幫助 - 不太明白。我正在查看url標籤 - 看起來很有用。我沒有創建模板,我只是繼承了他們:( –
啊,那麼hacky的解決方案是將鏈接改爲'/ mysite/report/...' – cberner