質問編集履歴

3

行間整備

2021/04/16 06:26

投稿

branch
branch

スコア70

test CHANGED
File without changes
test CHANGED
@@ -308,8 +308,12 @@
308
308
 
309
309
  のどれかをお教えいただきたいです.(④は将来的にぶち当たる壁であろうのでついでに,,,)
310
310
 
311
+
312
+
311
313
  不足している情報等あれば補足しますので,お申し付けください.
312
314
 
313
-
315
+ (Djangoは周辺ファイルがおおくて状況を伝えにくいですね,,,)
314
-
316
+
317
+
318
+
315
- どうぞよろしくお願いいたします.
319
+ れか一つでも大変助かりますので,ご回答の程,どうぞよろしくお願いいたします.

2

内容補足

2021/04/16 06:26

投稿

branch
branch

スコア70

test CHANGED
File without changes
test CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
 
4
4
 
5
-
5
+ ## やりたいこと
6
6
 
7
7
  ![イメージ説明](dec2814ab3b8b956b1bfb6d7efe00daa.png)
8
8
 
9
9
  上画面を従業員(=打刻者)が操作して,出勤/退勤ボタンを押すとその時刻をデータベースに登録させるという動作を実現したいのですが,formの入力値をデータベースに登録させるまでの流れが掴めない状態です.
10
10
 
11
-
11
+ ## 周辺ファイルとか
12
12
 
13
13
  ```base
14
14
 
@@ -212,7 +212,7 @@
212
212
 
213
213
  勤怠管理モデル(`AttendanceModel`)を作成しました.
214
214
 
215
-
215
+ ※今回保存されている内容はadminから直接入力しました.将来的にはユーザー画面上から入力できるように実装していきます.
216
216
 
217
217
  ```ParentCompanyModel
218
218
 
@@ -268,7 +268,11 @@
268
268
 
269
269
  4 1 2021-04-14 19:15:00 4 2
270
270
 
271
+ * in_outに関しては0が出勤,1が退勤です
272
+
271
- ```
273
+ ```
274
+
275
+ ## ためしたこと
272
276
 
273
277
  formのボタンを押したときにsubmit_attendanceviewを実行してほしいということで,attendance.htmlのformのactionの`#`の部分の代わりに`{% 'submit_attencanceview' %}`としたところ,下記のようにエラーします.
274
278
 
@@ -290,7 +294,9 @@
290
294
 
291
295
 
292
296
 
297
+
298
+
293
- まとめると,
299
+ ## まとめると,
294
300
 
295
301
  ①ボタンを押すとformの内容を取得してviews.py内の特定の関数を呼び出し実行する方法
296
302
 
@@ -302,6 +308,8 @@
302
308
 
303
309
  のどれかをお教えいただきたいです.(④は将来的にぶち当たる壁であろうのでついでに,,,)
304
310
 
311
+ 不足している情報等あれば補足しますので,お申し付けください.
312
+
305
313
 
306
314
 
307
315
  どうぞよろしくお願いいたします.

1

情報の追加

2021/04/15 08:18

投稿

branch
branch

スコア70

test CHANGED
File without changes
test CHANGED
@@ -8,6 +8,200 @@
8
8
 
9
9
  上画面を従業員(=打刻者)が操作して,出勤/退勤ボタンを押すとその時刻をデータベースに登録させるという動作を実現したいのですが,formの入力値をデータベースに登録させるまでの流れが掴めない状態です.
10
10
 
11
+
12
+
13
+ ```base
14
+
15
+ <!--base.html-->
16
+
17
+
18
+
19
+ <!doctype html>
20
+
21
+ <html lang="en">
22
+
23
+ <head>
24
+
25
+ <title>TimeCard</title>
26
+
27
+ {% block head %}
28
+
29
+ {% endblock head %}
30
+
31
+ </head>
32
+
33
+
34
+
35
+ <body>
36
+
37
+ {% block header %}
38
+
39
+ {% endblock header %}
40
+
41
+ {% block content %}
42
+
43
+ {% endblock content %}
44
+
45
+ </body>
46
+
47
+ </html>
48
+
49
+ ```
50
+
51
+ ```Attendance
52
+
53
+ <!--Attendance.html-->
54
+
55
+
56
+
57
+ {% extends 'base.html' %}
58
+
59
+
60
+
61
+ {% block head %}
62
+
63
+ <script>
64
+
65
+ function updateClock() {
66
+
67
+ var now = new Date();
68
+
69
+ var today = new Date();
70
+
71
+ var year = today.getFullYear();
72
+
73
+ var month = today.getMonth() + 1;
74
+
75
+ var week = today.getDay();
76
+
77
+ var day = today.getDate();
78
+
79
+ var hour = now.getHours();
80
+
81
+ var minute = now.getMinutes();
82
+
83
+ var second = now.getSeconds();
84
+
85
+ var week_ja = new Array("日", "月", "火", "水", "木", "金", "土");
86
+
87
+
88
+
89
+ if (hour < 10) hour = "0" + hour;
90
+
91
+ if (minute < 10) minute = "0" + minute;
92
+
93
+ if (second < 10) second = "0" + second;
94
+
95
+ document.getElementById('myClock').innerHTML
96
+
97
+ = year + "年" + month + "月" + day + "日 " + "(" + week_ja[week] + ")" + "<br>" + hour + ":" + minute + ":" + second;
98
+
99
+ }
100
+
101
+ function start() {
102
+
103
+ setInterval("updateClock();", 1000);
104
+
105
+ updateClock();
106
+
107
+ }
108
+
109
+ </script>
110
+
111
+ {% endblock head %}
112
+
113
+
114
+
115
+ {% block content %}
116
+
117
+
118
+
119
+ <body onload="start();">
120
+
121
+ <div id="myClock" align="center" style="font:bold 20pt Times New Roman;"></div>
122
+
123
+ <hr>
124
+
125
+
126
+
127
+ <div class="container" align="center">
128
+
129
+ <form action="{% 'submit_attencanceview' %}" method="POST">{% csrf_token %}
130
+
131
+ {{ form.as_p }}
132
+
133
+ <input type="submit" value="出勤" name="arrive">
134
+
135
+ <input type="submit" value="退勤" name="leave">
136
+
137
+ </form>
138
+
139
+ </div>
140
+
141
+
142
+
143
+ </body>
144
+
145
+ {% endblock content %}
146
+
147
+ ```
148
+
149
+ ```forms
150
+
151
+ # forms.py
152
+
153
+ from django import forms
154
+
155
+
156
+
157
+ class StaffAttendanceForm(forms.Form):
158
+
159
+ staff_id = forms.IntegerField()
160
+
161
+
162
+
163
+ ```
164
+
165
+
166
+
167
+ ```views
168
+
169
+ # views.py
170
+
171
+ from django.shortcuts import render, redirect
172
+
173
+ from django.contrib.auth.models import User
174
+
175
+ from .forms import StaffAttendanceForm
176
+
177
+
178
+
179
+ def attendanceview(request):
180
+
181
+ template_name = "attendance.html"
182
+
183
+ context = {"form": StaffAttendanceForm()}
184
+
185
+ return render(request, template_name, context)
186
+
187
+
188
+
189
+ def submit_attendanceview(request, pk):
190
+
191
+ if request.method == 'POST':
192
+
193
+ if "arrive" in request.POST:
194
+
195
+ print("just arrived" + "& id:" + str(pk))
196
+
197
+ elif "leave" in request.POST:
198
+
199
+ print("just left" + "& id:" + str(pk))
200
+
201
+
202
+
203
+ ```
204
+
11
205
  データベースとしてmodels.py内に
12
206
 
13
207
  親会社モデル(`ParentCompanyModel`),
@@ -20,162 +214,6 @@
20
214
 
21
215
 
22
216
 
23
-
24
-
25
- ```base
26
-
27
- <!--base.html-->
28
-
29
-
30
-
31
- <!doctype html>
32
-
33
- <html lang="en">
34
-
35
- <head>
36
-
37
- <title>TimeCard</title>
38
-
39
- {% block head %}
40
-
41
- {% endblock head %}
42
-
43
- </head>
44
-
45
-
46
-
47
- <body>
48
-
49
- {% block header %}
50
-
51
- {% endblock header %}
52
-
53
- {% block content %}
54
-
55
- {% endblock content %}
56
-
57
- </body>
58
-
59
- </html>
60
-
61
- ```
62
-
63
- ```Attendance
64
-
65
- <!--Attendance.html-->
66
-
67
-
68
-
69
- {% extends 'base.html' %}
70
-
71
-
72
-
73
- {% block head %}
74
-
75
- <script>
76
-
77
- function updateClock() {
78
-
79
- var now = new Date();
80
-
81
- var today = new Date();
82
-
83
- var year = today.getFullYear();
84
-
85
- var month = today.getMonth() + 1;
86
-
87
- var week = today.getDay();
88
-
89
- var day = today.getDate();
90
-
91
- var hour = now.getHours();
92
-
93
- var minute = now.getMinutes();
94
-
95
- var second = now.getSeconds();
96
-
97
- var week_ja = new Array("日", "月", "火", "水", "木", "金", "土");
98
-
99
-
100
-
101
- if (hour < 10) hour = "0" + hour;
102
-
103
- if (minute < 10) minute = "0" + minute;
104
-
105
- if (second < 10) second = "0" + second;
106
-
107
- document.getElementById('myClock').innerHTML
108
-
109
- = year + "年" + month + "月" + day + "日 " + "(" + week_ja[week] + ")" + "<br>" + hour + ":" + minute + ":" + second;
110
-
111
- }
112
-
113
- function start() {
114
-
115
- setInterval("updateClock();", 1000);
116
-
117
- updateClock();
118
-
119
- }
120
-
121
- </script>
122
-
123
- {% endblock head %}
124
-
125
-
126
-
127
- {% block content %}
128
-
129
-
130
-
131
- <body onload="start();">
132
-
133
- <div id="myClock" align="center" style="font:bold 20pt Times New Roman;"></div>
134
-
135
- <hr>
136
-
137
-
138
-
139
- <div class="container" align="center">
140
-
141
- <form action="{% 'submit_attencanceview' %}" method="POST">{% csrf_token %}
142
-
143
- {{ form.as_p }}
144
-
145
- <input type="submit" value="出勤" name="arrive">
146
-
147
- <input type="submit" value="退勤" name="leave">
148
-
149
- </form>
150
-
151
- </div>
152
-
153
-
154
-
155
- </body>
156
-
157
- {% endblock content %}
158
-
159
- ```
160
-
161
- ```forms
162
-
163
- # forms.py
164
-
165
- from django import forms
166
-
167
-
168
-
169
- class StaffAttendanceForm(forms.Form):
170
-
171
- staff_id = forms.IntegerField()
172
-
173
-
174
-
175
- ```
176
-
177
-
178
-
179
217
  ```ParentCompanyModel
180
218
 
181
219
  id name
@@ -224,10 +262,46 @@
224
262
 
225
263
  1 0 2021-04-14 08:15:00 1 1
226
264
 
227
- 2 0 2021-04-14 09:45:00 1 2
265
+ 2 0 2021-04-14 09:45:00 4 2
228
266
 
229
267
  3 1 2021-04-14 17:45:00 1 1
230
268
 
231
- 4 0 2021-04-14 19:15:00 1 2
269
+ 4 1 2021-04-14 19:15:00 4 2
232
-
270
+
233
- ```
271
+ ```
272
+
273
+ formのボタンを押したときにsubmit_attendanceviewを実行してほしいということで,attendance.htmlのformのactionの`#`の部分の代わりに`{% 'submit_attencanceview' %}`としたところ,下記のようにエラーします.
274
+
275
+ ```ErrorContent
276
+
277
+ TemplateSyntaxError at /attendance/
278
+
279
+ Invalid block tag on line 38: ''submit_attencanceview'', expected 'endblock'. Did you forget to register or load this tag?
280
+
281
+ ```
282
+
283
+ この場合だと,`Staff id`に"12345"を入力して"出勤"ボタンを押すと,
284
+
285
+ - URL遷移せずに`submit_attendanceview`に"12345", "出勤"を渡してDBに保存し,
286
+
287
+ - formをキレイにして次の人がまた打刻できる状態にする
288
+
289
+ ということを実行したいです.
290
+
291
+
292
+
293
+ まとめると,
294
+
295
+ ①ボタンを押すとformの内容を取得してviews.py内の特定の関数を呼び出し実行する方法
296
+
297
+ ②views.py内の関数でDBに保存する方法
298
+
299
+ ③URL遷移せず処理し,formをキレイにする方法
300
+
301
+ ④Staff idで呼び出すのではなく,プルダウンリストから自身の名前を選択する場合のviewの実装方針
302
+
303
+ のどれかをお教えいただきたいです.(④は将来的にぶち当たる壁であろうのでついでに,,,)
304
+
305
+
306
+
307
+ どうぞよろしくお願いいたします.