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

/report問題は、URLがhref属性で始まることです。で始まるという/ことは、それがあなたのドメインのルートに相対的であるべきであることを意味します。変更する必要があるのは、Djangoサイトフレームワークの構成方法だと思います。この質問に答えがあるようです。

また、アンカータグにURLをハードコーディングするのではなく、テンプレートでurlタグを使用する必要があります。

于 2012-06-13T15:46:59.537 に答える