これは私の最初のDjangoプロジェクトです。私はいくつかのチュートリアルを続けてきました。そのほとんどは非常に便利です。私は最初のアプリとして非常にシンプルなブログを作っています。今ではチュートリアルが私に見せてくれたことを少し超えて拡張しています。つまり、すべての投稿が属する新しいモデルCategoryを追加しました。モデル自体と関連するすべてのものが動作します。今私が問題を抱えているのはURLを解決することだけです。私は通常、投稿の一覧を表示するためにページネーションを使用していますが、追加の要素やオプションの要素、つまりカテゴリを追加したいと思います。だから私はsite.com/posts/?page=2
の選択肢を持っているだけでなく、site.com/posts/?cat=news&page=2
Django - ページネーションにいくつかの要素を含めるには
models.py
# Model for blog post category
class Category(models.Model):
title = models.CharField(max_length=120)
slug = models.SlugField(unique=True)
description = models.TextField()
class Meta:
verbose_name_plural = "Categories"
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("posts:detail", kwargs={"slug": self.slug})
# Model for blog post
class Post(models.Model):
title = models.CharField(max_length=120)
slug = models.SlugField(unique=True)
category = models.ManyToManyField(Category, blank=True, through='CategoryToPost')
content = models.TextField()
image = FilerImageField(null=True, blank=True, related_name="post_image")
created = models.DateTimeField(auto_now=False, auto_now_add=True)
published = models.DateTimeField(auto_now=False, auto_now_add=True)
updated = models.DateTimeField(auto_now=True, auto_now_add=False)
def __str__(self):
return self.title
def Category(self):
return self.category.all()
def get_absolute_url(self):
return reverse("posts:detail", kwargs={"slug": self.slug})
# Model for assigning post to a category
class CategoryToPost(models.Model):
post = models.ForeignKey(Post)
category = models.ForeignKey(Category)
urls.py
from .views import (
post_list,
post_detail
)
urlpatterns = [
url(r'^$', post_list),
url(r'^(?P<slug>[\w-]+)/$', post_detail, name='detail'),
]
ノートのようなものを使用することができないだけでリストを参照するときurls.pyからの行は、url(r'^posts/', include("posts.urls", namespace='posts')),
views.py
def post_detail(request, slug):
instance = get_object_or_404(Post, slug=slug)
context = {
"title": instance.title,
"instance": instance,
}
return render(request, "post_single.html", context)
def post_list(request):
queryset_list = Post.objects.all().order_by("-published")
paginator = Paginator(queryset_list, 5)
page = request.GET.get('page')
try:
queryset = paginator.page(page)
except PageNotAnInteger:
queryset = paginator.page(1)
except EmptyPage:
queryset = paginator.page(paginator.num_pages)
context = {
"title": "Post List",
"object_list": queryset,
}
return render(request, "post_list.html", context)
私はどこ改ページのドキュメントを開始し、Djangoのためには、この上で非常に明確でなくてもわからないんだけど、私はpost_list内でこのどこかを追加する必要があることを知っているが、正直に言うと。
はい、確かに働いていることをお願いいたします。 1つの最後の質問。どのように私は要求に常に猫を含めるためにモデルにURLリゾルバを追加しますか? – Ablivion
私は従いません。詳しく教えてください。 – xtranophilist
モデルカテゴリには関数get_absolute_urlがあるので、直接リンクすることができます。私は現在urls.pyを使って、 'url(r '^(?P [\ w - ] +)/ $'、post_detail、name = 'detail')という投稿を使っています。追加のURLを追加する必要があります。これには '?cat ='が含まれています。私は次の行を追加して周りに遊んだが、問題は正しいreg式に何が含まれているのか不明だということです?cat =その中に: 'url(r '^?cat =(&?P [\ w - ] +)/ $ '、post_detail、name =' category ')、' –
Ablivion