“实用django项目,第2版,源代码

时间:2010-08-17 12:44:19

标签: django

在James Bennett的“Practical django Projects”(第2版)中,作者构建了一个内容管理系统,利用了django.contrib.admin。问题是它不起作用。

我在第三章,他通过添加新的管理模块添加了关键字搜索功能。问题是我无法让它发挥作用。浏览网页时,我不断抱怨说,尽管书中有说法,但作者还没有提供工作资源。问题的核心在于他似乎依赖于django平台的内部结构,这些内部结构随着每次轻微发布都在变化,因此他的解决方案变得脆弱。

尽管如此,我仍然希望通过这个方法。

在第三章中,他应该添加一个新的搜索关键字admin函数,创建一个新的SearchKeyword模型,然后创建并注册一个SearchKeywordAdmin类。

模型(在cms / search / models.py中:

class SearchKeyword(models.Model):
    keyword = models.CharField(max_length=50)
    page = models.ForeignKey(FlatPage)

    def __unicode__(self):
        return self.keyword

该类(在cms / search / admin.py中):

class SearchKeywordAdmin(admin.ModelAdmin):
    pass

admin.site.register(SearchKeyword, SearchKeywordAdmin)

我看不到编译错误,但我在管理页面上看不到任何内容。

要么我做错了,或者django.contrib.admin中的某些内容发生了变化,要使此代码不再有效。

任何人都有任何想法吗?我可能需要做些什么才能使其发挥作用?

4 个答案:

答案 0 :(得分:2)

您的代码看起来很健康,所以您没有发布的内容是错误的。

您要导入所需的所有内容吗?

  • 您的models.py需要django.db.modelsFlatPage(可能来自django.contrib.flatpages.FlatPage
  • 您的admin.py需要from django.contrib import adminfrom cms.search.models import SearchKeyword

cms.search设置中有{{1}}吗?

答案 1 :(得分:1)

我在Ubuntu Jaunty上用Django 1.2.1和Python 2.6.2尝试了你的代码。该模型按预期显示在管理屏幕中。你能发布关于你正在使用的Django / Python版本的更多细节吗?

答案 2 :(得分:0)

你有:

from django.contrib import admin
admin.autodiscover()
urls.py中的

?还有这样的事情:

urlpatterns = patterns('',
    ...
    (r'^admin/', include(admin.site.urls)),
)

还有你在设置中打开管理员应用程序吗?

INSTALLED_APPS = (
    ...
    'django.contrib.admin',
)

答案 3 :(得分:0)

您可能需要再次运行manage.py runserver以允许管理部分重置。