2008-12-05 15 views
25

Dodałem funkcję get_absolute_url do jednego z moich modeli."Widok na stronie" Django Admin wskazuje na example.com zamiast mojej domeny

def get_absolute_url(self): 
    return '/foo/bar' 

Panel administracyjny podnosi go i dodaje „Widok na miejscu” link do strony szczegółów dla tego obiektu (kiedy kładę prawdziwe URL tam zamiast „/ foo/bar”).

Problem polega na tym, że zamiast przejść do http://localhost:8000/foo/bar, przechodzi on do http://example.com/foo/bar.

Co robię źle?

Odpowiedz

24

Musisz zmienić wartość domeny default site.

+6

Dzięki. Zajęło mi trochę czasu, aby dowiedzieć się, jak to zrobić. Jest to wpis w tabeli django_site. Znalazłem i zmieniłem go, klikając "Witryny" w administratorze. –

3

Możesz to zmienić w/admin/sites, jeśli masz włączonego administratora.

4

Najzabawniejsze jest to, że "example.com" pojawia się w oczywistym miejscu. Ale szukałem za godzinę.

Wystarczy użyć interfejsu administratora -> Miejsca -> ... tam jest :)

1

Po ukończeniu edycji instancja serwisu myślał admin, trzeba ponownie uruchomić serwer WWW, aby zmiany zaczęły obowiązywać . Myślę, że to musi oznaczać, że baza danych jest odczytywana tylko wtedy, gdy serwer WWW uruchamia się po raz pierwszy.

3

Jak wspomnieli inni, ma to związek z default sites framework.

Jeśli używasz South do migracji baz danych (chyba dobry pomysł w ogóle), można use a data migration to avoid having to make this same database change everywhere you deploy your application, wzdłuż linii

from south.v2 import DataMigration 
from django.conf import settings 

class Migration(DataMigration): 

    def forwards(self, orm): 
     Site = orm['sites.Site'] 
     site = Site.objects.get(id=settings.SITE_ID) 
     site.domain = 'yoursite.com' 
     site.name = 'yoursite' 
     site.save()