質問編集履歴

8

内容編集

2020/03/29 16:10

投稿

tomaa
tomaa

スコア84

test CHANGED
File without changes
test CHANGED
@@ -94,7 +94,7 @@
94
94
 
95
95
  ```
96
96
 
97
- app/urls.py
97
+ main/urls.py
98
98
 
99
99
 
100
100
 
@@ -108,7 +108,7 @@
108
108
 
109
109
 
110
110
 
111
- app_name = 'app'
111
+ app_name = 'main'
112
112
 
113
113
  urlpatterns = [
114
114
 

7

内容編集

2020/03/29 16:10

投稿

tomaa
tomaa

スコア84

test CHANGED
File without changes
test CHANGED
@@ -64,6 +64,86 @@
64
64
 
65
65
  ```
66
66
 
67
+ project/urls.py
68
+
69
+
70
+
71
+
72
+
73
+ ```python
74
+
75
+ from django.contrib import admin
76
+
77
+ from django.contrib.staticfiles.urls import static
78
+
79
+ from django.urls import path, include
80
+
81
+
82
+
83
+
84
+
85
+ urlpatterns = [
86
+
87
+ path('admin/', admin.site.urls),
88
+
89
+ path('', include('main.urls')),
90
+
91
+ path('accounts/', include('allauth.urls')),
92
+
93
+ ]
94
+
95
+ ```
96
+
97
+ app/urls.py
98
+
99
+
100
+
101
+
102
+
103
+ ```python
104
+
105
+ from django.urls import path
106
+
107
+ from . import views
108
+
109
+
110
+
111
+ app_name = 'app'
112
+
113
+ urlpatterns = [
114
+
115
+ path('', views.WelcomeView.as_view(), name='welcome'),
116
+
117
+ path('home/', views.HomeView.as_view(), name='home'),
118
+
119
+ path('detail/<int:pk>/', views.DetailView.as_view(), name='detail'),
120
+
121
+ path('detail_edit/<int:pk>/', views.DetailEditView.as_view(), name='detail_edit'),
122
+
123
+ path('resister_history/', views.ResisterHistoryView.as_view(), name='resister_history'),
124
+
125
+ path('resister_vegetable/', views.ResisterVegetableView.as_view(), name='resister_vegetable'),
126
+
127
+ path('delete/<int:pk>/', views.DeleteView.as_view(), name='delete'),
128
+
129
+ path('inquiry_login/', views.InquiryLoginView.as_view(), name='inquiry_login'),
130
+
131
+ path('inquiry/', views.InquiryView.as_view(), name='inquiry'),
132
+
133
+
134
+
135
+ path('404/', views.Error404View.as_view(), name='404'),
136
+
137
+ path('403/', views.Error403View.as_view(), name='403'),
138
+
139
+ path('500/', views.Error500View.as_view(), name='500'),
140
+
141
+
142
+
143
+ ]
144
+
145
+ ```
146
+
67
147
 
68
148
 
69
149
  detail.html

6

内容編集

2020/03/29 15:32

投稿

tomaa
tomaa

スコア84

test CHANGED
File without changes
test CHANGED
@@ -214,6 +214,58 @@
214
214
 
215
215
  ```
216
216
 
217
+ ### 追記④
218
+
219
+ print()テスト
220
+
221
+ ```ここに言語を入力
222
+
223
+ def get(self, request, *args, **kwargs):
224
+
225
+ req = request
226
+
227
+ pk = self.kwargs.get('pk') # urls.pyでpkに格納した値を取り出す。
228
+
229
+ if pk:
230
+
231
+ req.session['history'] = pk # セッションに'history'という名前のキーで保存する。
232
+
233
+ print('test①')
234
+
235
+ return render(req, 'detail.html')
236
+
237
+
238
+
239
+ def get_context_data(self, **kwargs):
240
+
241
+ print('test②')
242
+
243
+ # self.get()
244
+
245
+ context = super().get_context_data(**kwargs)
246
+
247
+ context['pk'] = self.kwargs.get('pk')
248
+
249
+ print('test③')
250
+
251
+ print(context['pk'])
252
+
253
+ return context
254
+
255
+
256
+
257
+ ```
258
+
259
+ コンソール
260
+
261
+ ```
262
+
263
+ test①
264
+
265
+ ```
266
+
267
+
268
+
217
269
  ### 追記③
218
270
 
219
271
  多くのご協力をいただき、解決はできていないですが、色々参考になる事がありました。

5

内容編集

2020/03/29 15:07

投稿

tomaa
tomaa

スコア84

test CHANGED
File without changes
test CHANGED
@@ -220,7 +220,11 @@
220
220
 
221
221
 
222
222
 
223
- 下記のコードで動かすと、エラー出まが、コンソールには、
223
+ 下記のコードで動かすと、最初はエラーている箇所が、最初のget(self, request, *args, **kwargs):だと思っていしたが、
224
+
225
+ print()を追加して確認すると、
226
+
227
+
224
228
 
225
229
 
226
230
 
@@ -236,7 +240,7 @@
236
240
 
237
241
  ただ、return super().get(request, *args, **kwargs)のところでエラーが出てしまいます。
238
242
 
239
- そこで、シンプルにreturnするものを、request.session['history']にしてもエラーが出てしまいます。
243
+ そこで、シンプルにreturnするものを、request.session['history']にしようと思ってもエラーが出てしまいます。
240
244
 
241
245
 
242
246
 

4

内容編集

2020/03/29 14:40

投稿

tomaa
tomaa

スコア84

test CHANGED
File without changes
test CHANGED
@@ -214,6 +214,80 @@
214
214
 
215
215
  ```
216
216
 
217
+ ### 追記③
218
+
219
+ 多くのご協力をいただき、解決はできていないですが、色々参考になる事がありました。
220
+
221
+
222
+
223
+ 下記のコードで動かすと、エラーは出ますが、コンソールには、
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+ までは表示されます。
232
+
233
+ request.session['history']にPKの値が入っている事も確認できます。
234
+
235
+
236
+
237
+ ただ、return super().get(request, *args, **kwargs)のところでエラーが出てしまいます。
238
+
239
+ そこで、シンプルにreturnするものを、request.session['history']にしてもエラーが出てしまいます。
240
+
241
+
242
+
243
+ ```ここに言語を入力
244
+
245
+ def get(self, request, *args, **kwargs):
246
+
247
+ pk = self.kwargs.get('pk') # urls.pyでpkに格納した値を取り出す。
248
+
249
+ print('①')
250
+
251
+ if pk:
252
+
253
+ request.session['history'] = pk # セッションに'history'という名前のキーで保存する。
254
+
255
+ print('②')
256
+
257
+ print('③')
258
+
259
+ return super().get(request, *args, **kwargs)
260
+
261
+ print('finish')
262
+
263
+
264
+
265
+
266
+
267
+ def get_context_data(self, **kwargs):
268
+
269
+ self.get()
270
+
271
+ context = super().get_context_data(**kwargs)
272
+
273
+ return context
274
+
275
+ ```
276
+
277
+ エラーコード
278
+
279
+ ```ここに言語を入力
280
+
281
+ TypeError at /detail/41/
282
+
283
+ get() missing 1 required positional argument: 'request'
284
+
285
+ ```
286
+
287
+
288
+
289
+
290
+
217
291
  ### 追記②
218
292
 
219
293
  ```ここに言語を入力

3

内容編集

2020/03/29 14:35

投稿

tomaa
tomaa

スコア84

test CHANGED
File without changes
test CHANGED
@@ -64,6 +64,156 @@
64
64
 
65
65
  ```
66
66
 
67
+
68
+
69
+ detail.html
70
+
71
+ ```html
72
+
73
+ {% extends "layout/layout_home.html" %}
74
+
75
+ {% load custom_tags %}
76
+
77
+
78
+
79
+ {% block title %}
80
+
81
+ Detail
82
+
83
+ {% endblock %}
84
+
85
+
86
+
87
+ {% block content %}
88
+
89
+
90
+
91
+ <!-- page content -->
92
+
93
+ <div class="right_col" role="main">
94
+
95
+ <div class="">
96
+
97
+ <div class="page-title">
98
+
99
+ <div class="title_left">
100
+
101
+ <h3>登録情報 </h3>
102
+
103
+ </div>
104
+
105
+ </div>
106
+
107
+ <div class="clearfix"></div>
108
+
109
+ <div class="row">
110
+
111
+ <div class="col-lg-6 offset-lg-3">
112
+
113
+
114
+
115
+ <div class="x_panel">
116
+
117
+ <div class="x_title">
118
+
119
+ <h2 style="color: #2B2B2B; font-weight: bold">{{ object.name }}  </h2>
120
+
121
+ <h2 style="color: #2B2B2B; font-weight: bold">{% none_to_blank object.type %}  </h2>
122
+
123
+ <h2 style="color: #2B2B2B; font-weight: bold">{{ object.name }}  </h2>
124
+
125
+ <h2 style="color: #2B2B2B; font-weight: bold">{% none_to_blank object.variety %}  </h2>
126
+
127
+ <ul class="nav navbar-right panel_toolbox">
128
+
129
+ <li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
130
+
131
+
132
+
133
+ </li>
134
+
135
+ <li class="dropdown">
136
+
137
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
138
+
139
+ aria-expanded="false"><i class="fa fa-wrench"></i></a>
140
+
141
+ <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
142
+
143
+ <a class="dropdown-item" href="#">Settings 1</a>
144
+
145
+ <a class="dropdown-item" href="#">Settings 2</a>
146
+
147
+ </div>
148
+
149
+ </li>
150
+
151
+ <li><a class="close-link"><i class="fa fa-close"></i></a>
152
+
153
+ </li>
154
+
155
+ </ul>
156
+
157
+ <div class="clearfix"></div>
158
+
159
+ </div>
160
+
161
+ <div class="x_content">
162
+
163
+
164
+
165
+ <p>登録日:{{ object.created_at }}  更新日:{{ object.updated_at }} </p>
166
+
167
+ <div class="x_content">
168
+
169
+ <a href="{% url 'main:detail_edit' object.pk %}">
170
+
171
+ <button type="button"
172
+
173
+ class="btn btn-success btn-m ">編集
174
+
175
+ </button>
176
+
177
+ </a>
178
+
179
+ <a href="{% url 'main:resister_history'%}">
180
+
181
+ <button type="button"
182
+
183
+ class="btn btn-primary btn-m ">収穫履歴を保存
184
+
185
+ </button>
186
+
187
+ </a>
188
+
189
+ <a href="{% url 'main:delete' object.pk %}">
190
+
191
+ <button type="button"
192
+
193
+ class="btn btn-danger btn-m ">削除
194
+
195
+ </button>
196
+
197
+ </a>
198
+
199
+ </div>
200
+
201
+ </div>
202
+
203
+ </div>
204
+
205
+ </div>
206
+
207
+ </div>
208
+
209
+ </div>
210
+
211
+ </div>
212
+
213
+ {% endblock %}
214
+
215
+ ```
216
+
67
217
  ### 追記②
68
218
 
69
219
  ```ここに言語を入力

2

追記記入

2020/03/29 13:01

投稿

tomaa
tomaa

スコア84

test CHANGED
File without changes
test CHANGED
@@ -64,9 +64,27 @@
64
64
 
65
65
  ```
66
66
 
67
+ ### 追記②
68
+
69
+ ```ここに言語を入力
70
+
71
+ self.check_session(self.request)
72
+
73
+ ```
74
+
75
+ とすると、requestは引数として渡っているようですが、別のエラーが発生します。
76
+
77
+ ```
78
+
79
+ TypeError at /detail/41/
80
+
81
+ Object of type CustomUser is not JSON serializable
82
+
83
+ ```
67
84
 
68
85
 
86
+
69
- ### 追記
87
+ ### 追記
70
88
 
71
89
  以下のサイトの方法を試しましたがうまく動作しませんでした(やはりrequestを引数に渡す必要があります)
72
90
 

1

内容編集

2020/03/29 04:49

投稿

tomaa
tomaa

スコア84

test CHANGED
File without changes
test CHANGED
@@ -66,7 +66,55 @@
66
66
 
67
67
 
68
68
 
69
+ ### 追記
69
70
 
71
+ 以下のサイトの方法を試しましたがうまく動作しませんでした(やはりrequestを引数に渡す必要があります)
72
+
73
+ [Django URLパラメータをセッションに保存してテンプレートで利用する](https://btj0.com/blog/django/session/)
74
+
75
+
76
+
77
+ ```
78
+
79
+ TypeError at /detail/41/
80
+
81
+ get() missing 1 required positional argument: 'request'
82
+
83
+ ```
84
+
85
+
86
+
87
+ ```python
88
+
89
+ class DetailView(LoginRequiredMixin, generic.DetailView):
90
+
91
+ model = sampleDB
92
+
93
+ template_name = 'detail.html'
94
+
95
+
96
+
97
+ def get(self, request, *args, **kwargs):
98
+
99
+ pk = self.kwargs.get('pk') # urls.pyでpkに格納した値を取り出す。
100
+
101
+ if pk:
102
+
103
+ request.session['history'] = pk # セッションに'history'という名前のキーで保存する。
104
+
105
+ return super().get(request, *args, **kwargs)
106
+
107
+
108
+
109
+ def get_context_data(self, **kwargs):
110
+
111
+ self.get()
112
+
113
+ context = super().get_context_data(**kwargs)
114
+
115
+ return context
116
+
117
+ ```
70
118
 
71
119
 
72
120