質問編集履歴
8
内容編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -94,7 +94,7 @@
|
|
94
94
|
|
95
95
|
```
|
96
96
|
|
97
|
-
a
|
97
|
+
main/urls.py
|
98
98
|
|
99
99
|
|
100
100
|
|
@@ -108,7 +108,7 @@
|
|
108
108
|
|
109
109
|
|
110
110
|
|
111
|
-
app_name = 'a
|
111
|
+
app_name = 'main'
|
112
112
|
|
113
113
|
urlpatterns = [
|
114
114
|
|
7
内容編集
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
内容編集
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
内容編集
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
内容編集
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
内容編集
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
追記記入
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
内容編集
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
|
|