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

質問編集履歴

8

内容編集

2020/03/29 16:10

投稿

tomaa
tomaa

スコア84

title CHANGED
File without changes
body CHANGED
@@ -46,14 +46,14 @@
46
46
  path('accounts/', include('allauth.urls')),
47
47
  ]
48
48
  ```
49
- app/urls.py
49
+ main/urls.py
50
50
 
51
51
 
52
52
  ```python
53
53
  from django.urls import path
54
54
  from . import views
55
55
 
56
- app_name = 'app'
56
+ app_name = 'main'
57
57
  urlpatterns = [
58
58
  path('', views.WelcomeView.as_view(), name='welcome'),
59
59
  path('home/', views.HomeView.as_view(), name='home'),

7

内容編集

2020/03/29 16:10

投稿

tomaa
tomaa

スコア84

title CHANGED
File without changes
body CHANGED
@@ -31,7 +31,47 @@
31
31
  return context
32
32
 
33
33
  ```
34
+ project/urls.py
34
35
 
36
+
37
+ ```python
38
+ from django.contrib import admin
39
+ from django.contrib.staticfiles.urls import static
40
+ from django.urls import path, include
41
+
42
+
43
+ urlpatterns = [
44
+ path('admin/', admin.site.urls),
45
+ path('', include('main.urls')),
46
+ path('accounts/', include('allauth.urls')),
47
+ ]
48
+ ```
49
+ app/urls.py
50
+
51
+
52
+ ```python
53
+ from django.urls import path
54
+ from . import views
55
+
56
+ app_name = 'app'
57
+ urlpatterns = [
58
+ path('', views.WelcomeView.as_view(), name='welcome'),
59
+ path('home/', views.HomeView.as_view(), name='home'),
60
+ path('detail/<int:pk>/', views.DetailView.as_view(), name='detail'),
61
+ path('detail_edit/<int:pk>/', views.DetailEditView.as_view(), name='detail_edit'),
62
+ path('resister_history/', views.ResisterHistoryView.as_view(), name='resister_history'),
63
+ path('resister_vegetable/', views.ResisterVegetableView.as_view(), name='resister_vegetable'),
64
+ path('delete/<int:pk>/', views.DeleteView.as_view(), name='delete'),
65
+ path('inquiry_login/', views.InquiryLoginView.as_view(), name='inquiry_login'),
66
+ path('inquiry/', views.InquiryView.as_view(), name='inquiry'),
67
+
68
+ path('404/', views.Error404View.as_view(), name='404'),
69
+ path('403/', views.Error403View.as_view(), name='403'),
70
+ path('500/', views.Error500View.as_view(), name='500'),
71
+
72
+ ]
73
+ ```
74
+
35
75
  detail.html
36
76
  ```html
37
77
  {% extends "layout/layout_home.html" %}

6

内容編集

2020/03/29 15:32

投稿

tomaa
tomaa

スコア84

title CHANGED
File without changes
body CHANGED
@@ -106,6 +106,32 @@
106
106
  </div>
107
107
  {% endblock %}
108
108
  ```
109
+ ### 追記④
110
+ print()テスト
111
+ ```ここに言語を入力
112
+ def get(self, request, *args, **kwargs):
113
+ req = request
114
+ pk = self.kwargs.get('pk') # urls.pyでpkに格納した値を取り出す。
115
+ if pk:
116
+ req.session['history'] = pk # セッションに'history'という名前のキーで保存する。
117
+ print('test①')
118
+ return render(req, 'detail.html')
119
+
120
+ def get_context_data(self, **kwargs):
121
+ print('test②')
122
+ # self.get()
123
+ context = super().get_context_data(**kwargs)
124
+ context['pk'] = self.kwargs.get('pk')
125
+ print('test③')
126
+ print(context['pk'])
127
+ return context
128
+
129
+ ```
130
+ コンソール
131
+ ```
132
+ test①
133
+ ```
134
+
109
135
  ### 追記③
110
136
  多くのご協力をいただき、解決はできていないですが、色々参考になる事がありました。
111
137
 

5

内容編集

2020/03/29 15:07

投稿

tomaa
tomaa

スコア84

title CHANGED
File without changes
body CHANGED
@@ -109,7 +109,9 @@
109
109
  ### 追記③
110
110
  多くのご協力をいただき、解決はできていないですが、色々参考になる事がありました。
111
111
 
112
- 下記のコードで動かすと、エラー出まが、コンソールには、
112
+ 下記のコードで動かすと、最初はエラーている箇所が、最初のget(self, request, *args, **kwargs):だと思っていしたが、
113
+ print()を追加して確認すると、
114
+
113
115
 
114
116
 
115
117
 
@@ -117,7 +119,7 @@
117
119
  request.session['history']にPKの値が入っている事も確認できます。
118
120
 
119
121
  ただ、return super().get(request, *args, **kwargs)のところでエラーが出てしまいます。
120
- そこで、シンプルにreturnするものを、request.session['history']にしてもエラーが出てしまいます。
122
+ そこで、シンプルにreturnするものを、request.session['history']にしようと思ってもエラーが出てしまいます。
121
123
 
122
124
  ```ここに言語を入力
123
125
  def get(self, request, *args, **kwargs):

4

内容編集

2020/03/29 14:40

投稿

tomaa
tomaa

スコア84

title CHANGED
File without changes
body CHANGED
@@ -106,6 +106,43 @@
106
106
  </div>
107
107
  {% endblock %}
108
108
  ```
109
+ ### 追記③
110
+ 多くのご協力をいただき、解決はできていないですが、色々参考になる事がありました。
111
+
112
+ 下記のコードで動かすと、エラーは出ますが、コンソールには、
113
+
114
+
115
+
116
+ までは表示されます。
117
+ request.session['history']にPKの値が入っている事も確認できます。
118
+
119
+ ただ、return super().get(request, *args, **kwargs)のところでエラーが出てしまいます。
120
+ そこで、シンプルにreturnするものを、request.session['history']にしてもエラーが出てしまいます。
121
+
122
+ ```ここに言語を入力
123
+ def get(self, request, *args, **kwargs):
124
+ pk = self.kwargs.get('pk') # urls.pyでpkに格納した値を取り出す。
125
+ print('①')
126
+ if pk:
127
+ request.session['history'] = pk # セッションに'history'という名前のキーで保存する。
128
+ print('②')
129
+ print('③')
130
+ return super().get(request, *args, **kwargs)
131
+ print('finish')
132
+
133
+
134
+ def get_context_data(self, **kwargs):
135
+ self.get()
136
+ context = super().get_context_data(**kwargs)
137
+ return context
138
+ ```
139
+ エラーコード
140
+ ```ここに言語を入力
141
+ TypeError at /detail/41/
142
+ get() missing 1 required positional argument: 'request'
143
+ ```
144
+
145
+
109
146
  ### 追記②
110
147
  ```ここに言語を入力
111
148
  self.check_session(self.request)

3

内容編集

2020/03/29 14:35

投稿

tomaa
tomaa

スコア84

title CHANGED
File without changes
body CHANGED
@@ -31,6 +31,81 @@
31
31
  return context
32
32
 
33
33
  ```
34
+
35
+ detail.html
36
+ ```html
37
+ {% extends "layout/layout_home.html" %}
38
+ {% load custom_tags %}
39
+
40
+ {% block title %}
41
+ Detail
42
+ {% endblock %}
43
+
44
+ {% block content %}
45
+
46
+ <!-- page content -->
47
+ <div class="right_col" role="main">
48
+ <div class="">
49
+ <div class="page-title">
50
+ <div class="title_left">
51
+ <h3>登録情報 </h3>
52
+ </div>
53
+ </div>
54
+ <div class="clearfix"></div>
55
+ <div class="row">
56
+ <div class="col-lg-6 offset-lg-3">
57
+
58
+ <div class="x_panel">
59
+ <div class="x_title">
60
+ <h2 style="color: #2B2B2B; font-weight: bold">{{ object.name }}  </h2>
61
+ <h2 style="color: #2B2B2B; font-weight: bold">{% none_to_blank object.type %}  </h2>
62
+ <h2 style="color: #2B2B2B; font-weight: bold">{{ object.name }}  </h2>
63
+ <h2 style="color: #2B2B2B; font-weight: bold">{% none_to_blank object.variety %}  </h2>
64
+ <ul class="nav navbar-right panel_toolbox">
65
+ <li><a class="collapse-link"><i class="fa fa-chevron-up"></i></a>
66
+
67
+ </li>
68
+ <li class="dropdown">
69
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button"
70
+ aria-expanded="false"><i class="fa fa-wrench"></i></a>
71
+ <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
72
+ <a class="dropdown-item" href="#">Settings 1</a>
73
+ <a class="dropdown-item" href="#">Settings 2</a>
74
+ </div>
75
+ </li>
76
+ <li><a class="close-link"><i class="fa fa-close"></i></a>
77
+ </li>
78
+ </ul>
79
+ <div class="clearfix"></div>
80
+ </div>
81
+ <div class="x_content">
82
+
83
+ <p>登録日:{{ object.created_at }}  更新日:{{ object.updated_at }} </p>
84
+ <div class="x_content">
85
+ <a href="{% url 'main:detail_edit' object.pk %}">
86
+ <button type="button"
87
+ class="btn btn-success btn-m ">編集
88
+ </button>
89
+ </a>
90
+ <a href="{% url 'main:resister_history'%}">
91
+ <button type="button"
92
+ class="btn btn-primary btn-m ">収穫履歴を保存
93
+ </button>
94
+ </a>
95
+ <a href="{% url 'main:delete' object.pk %}">
96
+ <button type="button"
97
+ class="btn btn-danger btn-m ">削除
98
+ </button>
99
+ </a>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ </div>
105
+ </div>
106
+ </div>
107
+ {% endblock %}
108
+ ```
34
109
  ### 追記②
35
110
  ```ここに言語を入力
36
111
  self.check_session(self.request)

2

追記記入

2020/03/29 13:01

投稿

tomaa
tomaa

スコア84

title CHANGED
File without changes
body CHANGED
@@ -31,8 +31,17 @@
31
31
  return context
32
32
 
33
33
  ```
34
+ ### 追記②
35
+ ```ここに言語を入力
36
+ self.check_session(self.request)
37
+ ```
38
+ とすると、requestは引数として渡っているようですが、別のエラーが発生します。
39
+ ```
40
+ TypeError at /detail/41/
41
+ Object of type CustomUser is not JSON serializable
42
+ ```
34
43
 
35
- ### 追記
44
+ ### 追記
36
45
  以下のサイトの方法を試しましたがうまく動作しませんでした(やはりrequestを引数に渡す必要があります)
37
46
  [Django URLパラメータをセッションに保存してテンプレートで利用する](https://btj0.com/blog/django/session/)
38
47
 

1

内容編集

2020/03/29 04:49

投稿

tomaa
tomaa

スコア84

title CHANGED
File without changes
body CHANGED
@@ -32,8 +32,32 @@
32
32
 
33
33
  ```
34
34
 
35
+ ### 追記
36
+ 以下のサイトの方法を試しましたがうまく動作しませんでした(やはりrequestを引数に渡す必要があります)
37
+ [Django URLパラメータをセッションに保存してテンプレートで利用する](https://btj0.com/blog/django/session/)
35
38
 
39
+ ```
40
+ TypeError at /detail/41/
41
+ get() missing 1 required positional argument: 'request'
42
+ ```
36
43
 
44
+ ```python
45
+ class DetailView(LoginRequiredMixin, generic.DetailView):
46
+ model = sampleDB
47
+ template_name = 'detail.html'
48
+
49
+ def get(self, request, *args, **kwargs):
50
+ pk = self.kwargs.get('pk') # urls.pyでpkに格納した値を取り出す。
51
+ if pk:
52
+ request.session['history'] = pk # セッションに'history'という名前のキーで保存する。
53
+ return super().get(request, *args, **kwargs)
54
+
55
+ def get_context_data(self, **kwargs):
56
+ self.get()
57
+ context = super().get_context_data(**kwargs)
58
+ return context
59
+ ```
60
+
37
61
  ### 補足情報(FW/ツールのバージョンなど)
38
62
 
39
63
  ●開発環境