カテゴリと投稿が入っているブログを作りたい。 カテゴリを表示する必要があります。クリックすると、このカテゴリの記事が表示されている別のサイトにリダイレクトされます。プライマリキーdjangoでリダイレクトする{%url%}
models.py:
class Category(CMSPlugin):
title = models.CharField(max_length=20, default='category')
def __unicode__(self):
return self.title
class Blog_post(CMSPlugin):
category = models.ForeignKey(Category)
style = models.ForeignKey(Blog_style)
title = models.CharField(max_length=200, default='title')
description = models.CharField(max_length=200,default='description')
image = models.ImageField(upload_to='static', null=True, blank=True)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __unicode__(self):
return self.title
views.py
def Blog_list(request):
posts = Blog_post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
category = Category.objects.all()
return render(request, 'blogspot.html', {'posts': posts, 'category':category})
def post_detail(request, pk):
post = get_object_or_404(Blog_post, pk=pk)
return render(request, 'post_detail.html', {'post': post})
def category_detail(request, pk):
cat = get_object_or_404(Category, id=pk)
post_with_category = Blog_post.objects.filter(category=cat)
return render(request, 'articles.html', {'post_with_category': post_with_category})
blogspot.html
{% for post in posts %}
<h1><a href="{% url 'post_detail' pk=post.pk %}">{{post.title}}</a></h1>
<a href="{% url 'category_detail' pk=post.category.id %}" >{{ post.category }}</a>
{{post.title}}
{{ post.description }}
{{ post.image }}
{{ post.text }}{{ post.published_date }}
{% endfor %}
は、これまでのところ、すべての[OK]を動作します。 {{post.title}}をクリックして、post_detailにリダイレクトしました。今私はカテゴリーと同じ論理を作りたいと思う。 {{post.category}}をクリックするとarticles.htmlにリダイレクトして、特定のカテゴリのすべての記事を見ることができます。
編集:
カテゴリに投稿を表示するコードを挿入しました。私はforループにこだわった。私が投稿に記載されたループを使用する場合、私はすべての投稿とカテゴリを取得します。問題は、1つのカテゴリに2つの投稿があり、このループでテンプレートの2倍の「カテゴリ」が表示される場合です。
私はforループを編集しました。
{% for post in category %}
{{post.title}}
{% endfor %}
私はこのループで<a href="{% url 'category_detail' pk=post.category.id %}" >{{post.title}}
を挿入した場合私は逆の試合を取得していません。私は
とURL views.py category_detailを変更しようとした はlocalhost/<category>/
のように見えるはずですそして、私はあなたを理解していれば別の質問では、"select*from Table Where Column_id= id ;
urls.py
url(r'^blog/$', views.Blog_list, name='Blog_list'),
url(r'^blog/(?P<pk>\d+)/$', views.post_detail, name='post_detail'),
:
URLは仕事に上記のhtmlのために、以下のHREFタグのようなものを含めるしたいと思います) 'をあなたのBlog_listビューに表示しますか? – Doug
テンプレートのすべてのカテゴリが印刷されます。私は "ポスト"ループを使用する場合は、私は多くの投稿と同様に印刷されたカテゴリを取得します。カテゴリ1に5つの投稿がある場合。私のループはカテゴリ1を5回印刷します – OverHeat
すべての投稿テンプレートのすべてのカテゴリを印刷していますか? – Doug