2008-12-05 35 views
25

Tôi đã thêm một chức năng get_absolute_url vào một trong các mô hình của tôi."Chế độ xem trên trang web" của Django quản trị trỏ đến example.com thay vì tên miền của tôi

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

Trang quản trị chọn nó và thêm liên kết "xem trên trang web" vào trang chi tiết cho đối tượng đó (khi tôi đặt URL thực thay vì "/ foo/bar").

Sự cố này thay vì truy cập http://localhost:8000/foo/bar, nó chuyển đến http://example.com/foo/bar.

Tôi đang làm gì sai?

Trả lời

24

Bạn phải thay đổi default site giá trị tên miền.

+6

Cảm ơn. Tôi mất một lúc để tìm ra cách để làm điều đó. Đó là một mục trong bảng django_site. Tôi đã tìm thấy và thay đổi nó bằng cách nhấp vào "Trang web" trong quản trị viên. –

3

Bạn có thể thay đổi điều này trong/admin/sites nếu bạn đã bật quản trị viên.

4

Điều hài hước nhất là "example.com" xuất hiện ở một nơi hiển nhiên. Tuy nhiên, tôi đã tìm kiếm trong một giờ hoặc lâu hơn.

Chỉ cần sử dụng giao diện quản trị của bạn -> Sites -> ... nó đây :)

1

Khi bạn đã chỉnh sửa một trường hợp Site nghĩ admin, bạn cần phải khởi động lại máy chủ web của bạn để thay đổi có hiệu lực . Tôi đoán điều này phải có nghĩa là cơ sở dữ liệu chỉ được đọc khi máy chủ web bắt đầu lần đầu tiên.

3

Như những người khác đã đề cập, điều này là để làm với default sites framework.

Nếu bạn đang sử dụng South cho sự di cư cơ sở dữ liệu (có thể là một ý tưởng tốt nói chung), bạn có thể use a data migration to avoid having to make this same database change everywhere you deploy your application, dọc theo dòng của

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() 
Các vấn đề liên quan