teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

ブログ部分のコードを追記しました

2020/12/20 22:24

投稿

Neru_K
Neru_K

スコア19

title CHANGED
File without changes
body CHANGED
@@ -27,4 +27,90 @@
27
27
 
28
28
  どのような情報を記載したらよいかもあまり分かっていないため、これだけじゃ分からないよ!などあれば指摘して頂ければ情報を追記いたします????
29
29
  こういう原因が考えられるのではないか?などヒントとなるようなことでも結構ですので、教えていただければ大変ありがたいです。
30
- 拙い質問ですが何卒宜しくお願い致します????
30
+ 拙い質問ですが何卒宜しくお願い致します????
31
+
32
+ ### 追記情報 ブログ部分のコード
33
+ ブログに関する部分のコードです。
34
+ ブログの記事は、×××.com/ のホームと、×××.com/blog/のブログページのそれぞれに一覧表示として表示させております。詳細ページは作っていません。
35
+ カテゴリーの部分は書籍には載っておらず、ググりながら追加したものですのでなにかおかしなところがあるかもしれません????
36
+
37
+ ```Python
38
+ blog/models.py
39
+ --------------
40
+
41
+ from django.db import models
42
+
43
+ class Category(models.Model):
44
+ name = models.CharField('カテゴリー', max_length=50)
45
+
46
+ def __str__(self):
47
+ return self.name
48
+
49
+
50
+ class Blog(models.Model):
51
+ title = models.CharField(max_length=100)
52
+ body = models.TextField()
53
+ created_at = models.DateField('作成日', auto_now_add=True)
54
+ updated_at = models.DateField('更新日', auto_now=True)
55
+
56
+ category = models.ForeignKey(
57
+ Category, verbose_name='カテゴリー',
58
+ on_delete=models.PROTECT
59
+ )
60
+ image = models.ImageField(upload_to='blogs/',blank=False)
61
+
62
+ # 管理画面の一覧にタイトルを表示させるようにする
63
+ def __str__(self):
64
+ return self.title
65
+
66
+ ```
67
+
68
+ ```Python
69
+ blog/views.py
70
+ -------------
71
+ from django.shortcuts import render
72
+ from django.views.generic import ListView
73
+ from .models import Category, Blog
74
+ from django.views import generic
75
+
76
+
77
+ # Create your views here.
78
+ class BlogListView(ListView):
79
+ model = Blog
80
+ context_object_name = 'blog_list'
81
+ template_name = 'blog.html'
82
+ paginate_by = 5
83
+
84
+ def get_queryset(self):
85
+ return Blog.objects.order_by('-updated_at')
86
+
87
+ """ カテゴリー一覧 """
88
+
89
+ class CategoryView(generic.ListView):
90
+ model = Blog
91
+ template_name = 'blog/index.html'
92
+
93
+ def get_queryset(self):
94
+ category = Category.objects.get(name=self.kwargs['category'])
95
+ queryset = Blog.objects.order_by('-id').filter(category=category)
96
+ return queryset
97
+
98
+ def get_context_data(self, **kwargs):
99
+ context = super().get_context_data(**kwargs)
100
+ context['category_key'] = self.kwargs['category']
101
+ return context
102
+
103
+ ```
104
+
105
+ ```Python
106
+ blog/urls.py
107
+ ------------
108
+ from django.urls import path
109
+ from .views import BlogListView
110
+ from . import views
111
+
112
+ urlpatterns = [
113
+ path('', BlogListView.as_view(), name='blog_list'),
114
+ path('category/<str:category>/', views.CategoryView.as_view(), name='category'),
115
+ ]
116
+ ```