Django视图/过滤器
我刚刚完成了Django教程,虽然对学习更多感到兴奋,但我一点也不精通。我想你可能会说我不知道在这一点上有多危险 假设我有一个音乐数据库。我有一个艺术家模型、一个专辑模型、一个流派模型和一个歌曲模型。我希望能够根据给定的过滤器显示相册(甚至艺术家);因此,我的前端将显示相册列表,并提供一种过滤列表的方法。例如,“Jazz”链接只能显示爵士乐专辑。很简单 我可以想出几种方法来实现这一点,但我想从正确的角度出发……开始形成“最佳实践”Django方法。我能想到的一种方法是写视图……这样/albums/jazz只显示jazz。另一种方法是编写过滤相册的模型级方法。然而,在这里,我对如何实际实现这样一个过滤器有点模糊Django视图/过滤器,django,filtering,Django,Filtering,我刚刚完成了Django教程,虽然对学习更多感到兴奋,但我一点也不精通。我想你可能会说我不知道在这一点上有多危险 假设我有一个音乐数据库。我有一个艺术家模型、一个专辑模型、一个流派模型和一个歌曲模型。我希望能够根据给定的过滤器显示相册(甚至艺术家);因此,我的前端将显示相册列表,并提供一种过滤列表的方法。例如,“Jazz”链接只能显示爵士乐专辑。很简单 我可以想出几种方法来实现这一点,但我想从正确的角度出发……开始形成“最佳实践”Django方法。我能想到的一种方法是写视图……这样/albums
有人能概括介绍一下如何最好地完成这项任务吗?假设您知道如何在项目中构造应用程序(即教程所教的内容),您可以使用示例
models.py
、url.py
和views.py
为您的示例应用程序myapp
处理此示例
示例models.py
:
class Genre(models.Model):
name = models.CharField(unique=True) # set name to be unique
...
class Album(models.Model):
genre = models.ForeignKey(Genre)
...
urlpatterns = patterns('',
...
url(
r'^albums/(?P<genre>[-\w]+)/$',
ListAlbumsByGenreView.as_view(), name='list_albums_by_genre_view'
),
...
)
示例url.py
:
class Genre(models.Model):
name = models.CharField(unique=True) # set name to be unique
...
class Album(models.Model):
genre = models.ForeignKey(Genre)
...
urlpatterns = patterns('',
...
url(
r'^albums/(?P<genre>[-\w]+)/$',
ListAlbumsByGenreView.as_view(), name='list_albums_by_genre_view'
),
...
)
上面的列表视图将相册
放在HTML模板的上下文中;其中包含按流派筛选的相册列表
上面使用的单独导入的函数在Django文档中都有精美的文档记录 多谢各位。我唯一不理解的一行是:“context=super(ListAlbumsByGenreView,self)。get_context_data(**kwargs)
get_context_data
是继承的ListView
类方法;必须调用其super
父方法,以便使用父函数返回的任何上下文启动上下文。例如,如果ListView
在上下文中设置了一个page\u no
,此调用将确保实际发生这种情况。请注意,这只是一个示例。在本例中,我这样做只是为了遵循最佳实践(您也应该这样做)。