假设您知道如何在项目中构建应用程序(即本教程教授的内容),您可以使用示例models.py
和urls.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)
...
示例urls.py
:
urlpatterns = patterns('',
...
url(
r'^albums/(?P<genre>[-\w]+)/$',
ListAlbumsByGenreView.as_view(), name='list_albums_by_genre_view'
),
...
)
请注意该genre
参数是 URL 模式中的唯一参数。
views.py
使用ListView的示例:
from django.shortcuts import get_object_or_404
from django.views.generic.list import ListView
from myapp.models import Album, Genre
class ListAlbumsByGenreView(ListView):
model = Album
def get_context_data(self, **kwargs):
context = super(ListAlbumsByGenreView, self).get_context_data(**kwargs)
# fetch the genre; if genre not found, an HTTP 404 is returned
genre = get_object_or_404(Genre, name=kwargs['genre'])
# filter the albums by genre
context['albums'] = Album.objects.filter(genre=genre)
return context
上面的 ListView 放入albums
您的 HTML 模板的上下文中;这包含按流派过滤的专辑列表。
上面使用的单独导入的函数都在 Django 文档中有很好的记录。