我在其中一个模型中添加了get_absolute_url
函数。
def get_absolute_url(self):
return '/foo/bar'
管理网站选择它并添加一个“网站视图”链接到该对象的详细信息页面(当我在那里放置一个真实的URL而不是“/ foo / bar”时)。
问题不是转到http://localhost:8000/foo/bar
,而是转到http://example.com/foo/bar
。
我做错了什么?
答案 0 :(得分:24)
您必须更改default site域名值。
答案 1 :(得分:6)
最有趣的是“example.com”出现在一个显而易见的地方。然而,我在一个小时左右的时间里寻找。
只需使用您的管理界面 - >网站 - > ......那里是:)
答案 2 :(得分:4)
如果您启用了管理员,则可以在/ admin / sites中更改此内容。
答案 3 :(得分:4)
正如其他人所说,这与default sites
framework。
如果您正在使用South进行数据库迁移(可能很好 一般来说,你可以{/ 3}},
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()
答案 4 :(得分:1)
当您编辑了一个认为是admin的Site实例时,您需要重新启动Web服务器才能使更改生效。我想这必须意味着只有在Web服务器首次启动时才会读取数据库。
答案 5 :(得分:1)
如果您使用的是django的较新版本。数据迁移是这样的:
from django.conf import settings
from django.db import migrations
def change_site_name(apps, schema_editor):
Site = apps.get_model('sites', 'Site')
site = Site.objects.get(id=settings.SITE_ID)
site.domain = 'yourdomain.com'
site.name = 'Your Site'
site.save()
class Migration(migrations.Migration):
dependencies = [
('app', '0001_initial'),
]
operations = [
migrations.RunPython(change_site_name),
]