mip*_*adi 12 django django-admin django-sites
我已经使用Django应用程序了一段时间,Django管理界面工作得很好,除了 "在网站上查看"链接不起作用.每当我尝试使用它时,我会收到一条OperationalError消息:no such table: django_site.我已经对这个问题进行了一些研究,似乎我必须为这个链接设置Django站点框架才能工作,但我确定如何做到这一点.文档讨论了数据库表等,但它没有说明如何实际设置站点.所以我的问题实际上是双重的:
./manage.py syncdb哪些内容以便自动"检测"我想要设置表格?settings.py喜欢SITE_ID = 2 if DEBUG else 1,或将manage.py只检测到我正在调试的网站,而不是做网站架构什么?把
'django.contrib.sites',
Run Code Online (Sandbox Code Playgroud)
进入您的INSTALLED_APPS和以下内容
$ ./manage.py syncdb
Run Code Online (Sandbox Code Playgroud)
可能就够了.
安装后,编辑Site实例(例如,通过/admin界面)以反映您的本地主机名(例如localhost:8000).
正如其他人所传达的,除了启用 view_on_site 之外,这还需要几个额外的步骤。您必须在模型中实现 get_absolute_url() ,并在项目设置中启用站点。
将 view_on_site 设置添加到管理表单:
class MymodelAdmin(admin.ModelAdmin):
...
view_on_site = True
...
admin.site.register(Mymodel, MymodelAdmin)
Run Code Online (Sandbox Code Playgroud)
将get_absolute_url()添加到您的模型中。在 models.py 中:
Mymodel(models.Model):
...
def get_absolute_url(self):
return "/mystuff/%i" % self.id
Run Code Online (Sandbox Code Playgroud)
在 yourapp/settings.py 中添加站点:
INSTALLED_APPS = (
...
'django.contrib.sites',
...
)
Run Code Online (Sandbox Code Playgroud)
然后更新数据库:
$ python manage.py migrate
Run Code Online (Sandbox Code Playgroud)
查看reverse(),了解在 get_absolute_url() 中生成路径的更复杂的方法。
| 归档时间: |
|
| 查看次数: |
11697 次 |
| 最近记录: |