質問編集履歴
4
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -33,25 +33,23 @@
|
|
33
33
|
|
34
34
|
|
35
35
|
|
36
|
-
#blog/
|
36
|
+
#blog/urls.py
|
37
37
|
```python
|
38
|
-
from django import
|
38
|
+
from django.urls import path
|
39
|
+
from . import views
|
39
40
|
|
40
|
-
|
41
|
+
urlpatterns = [
|
42
|
+
path('', views.post_list, name='post_list'),
|
43
|
+
path('post/<int:pk>/post_form/', views.post_form, name='post_form'),
|
44
|
+
]
|
41
45
|
|
42
|
-
class PostForm(forms.ModelForm):
|
43
46
|
|
44
|
-
class Meta:
|
45
|
-
model = Post
|
46
|
-
fields = '__all__'
|
47
|
-
|
48
|
-
|
49
47
|
```
|
50
48
|
|
51
49
|
#blog/templates/blog/post_list.html
|
52
50
|
```HTML
|
53
51
|
{% for post in posts %}
|
54
|
-
<form action="" method="POST">
|
52
|
+
<form action="{% url 'post_form' pk=post.pk %}" method="POST">
|
55
53
|
{% csrf_token %}
|
56
54
|
<input type="submit" value="+1">
|
57
55
|
</form>
|
@@ -77,14 +75,14 @@
|
|
77
75
|
def post_form(request):
|
78
76
|
|
79
77
|
if request.method == 'POST':
|
80
|
-
|
78
|
+
post = get_object_or_404(Post, pk=pk)
|
81
|
-
|
79
|
+
post.up_number += 1
|
82
|
-
up_number = int(form.cleaned_data['up_number']) + 1
|
83
|
-
|
80
|
+
post.save()
|
84
|
-
return redirect('/')
|
85
81
|
|
82
|
+
return render(request, 'blog/post_list')
|
86
83
|
|
87
84
|
|
85
|
+
|
88
86
|
```
|
89
87
|
|
90
88
|
|
3
文法の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -41,8 +41,11 @@
|
|
41
41
|
|
42
42
|
class PostForm(forms.ModelForm):
|
43
43
|
|
44
|
+
class Meta:
|
45
|
+
model = Post
|
44
|
-
|
46
|
+
fields = '__all__'
|
45
47
|
|
48
|
+
|
46
49
|
```
|
47
50
|
|
48
51
|
#blog/templates/blog/post_list.html
|
@@ -74,12 +77,14 @@
|
|
74
77
|
def post_form(request):
|
75
78
|
|
76
79
|
if request.method == 'POST':
|
80
|
+
form = PostForm(request.POST)
|
81
|
+
if form.is_valid():
|
82
|
+
up_number = int(form.cleaned_data['up_number']) + 1
|
83
|
+
form.save()
|
84
|
+
return redirect('/')
|
77
85
|
|
78
|
-
post.up_number = int(post.cleaned_data['up_number']) + 1
|
79
86
|
|
80
|
-
post.save()
|
81
87
|
|
82
|
-
|
83
88
|
```
|
84
89
|
|
85
90
|
|
2
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
1
書式の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
|
-
※ここに写真を載せていない分はDjango Girlsのチュートリアルと同じです。(ディレクトリも同様)
|
3
2
|
Djangoでデータベースの更新を行いたいです。
|
4
3
|
具体的に言うと、ブラウザ上で”+1”のボタンを押すとデータベース上でその数字が+1されその数字をブラウザ上に表示したいです。
|
5
4
|
例)元の数字が1→ボタンを押す→データベースが更新され1が2になる→2がブラウザ上に表示される。
|
@@ -10,23 +9,82 @@
|
|
10
9
|
ボタンを押してもデータベース上では数字の更新後行われていない。
|
11
10
|
|
12
11
|
### 該当のソースコード
|
13
|
-
#models.py
|
12
|
+
#blog/models.py
|
13
|
+
```python
|
14
|
+
from django.conf import settings
|
15
|
+
from django.db import models
|
16
|
+
from django.utils import timezone
|
17
|
+
|
18
|
+
|
19
|
+
class Post(models.Model):
|
20
|
+
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
|
14
|
-
|
21
|
+
title = models.CharField(max_length=200)
|
22
|
+
|
23
|
+
#このup_numberをどうにかしたい
|
24
|
+
up_number = models.IntegerField(default=0)
|
25
|
+
|
26
|
+
published_date = models.DateTimeField(blank=True, null=True)
|
27
|
+
|
28
|
+
def publish(self):
|
29
|
+
self.published_date = timezone.now()
|
30
|
+
self.save()
|
31
|
+
|
32
|
+
```
|
15
33
|
|
16
34
|
|
17
35
|
|
18
|
-
#forms.py
|
36
|
+
#blog/forms.py
|
37
|
+
```python
|
19
|
-
|
38
|
+
from django import forms
|
20
39
|
|
21
|
-
|
40
|
+
from .models import Post
|
22
|
-

|
23
41
|
|
24
|
-
#views.py
|
25
|
-
|
42
|
+
class PostForm(forms.ModelForm):
|
26
43
|
|
44
|
+
up_number = forms.IntegerField()
|
27
45
|
|
46
|
+
```
|
28
47
|
|
48
|
+
#blog/templates/blog/post_list.html
|
49
|
+
```HTML
|
50
|
+
{% for post in posts %}
|
51
|
+
<form action="" method="POST">
|
52
|
+
{% csrf_token %}
|
53
|
+
<input type="submit" value="+1">
|
54
|
+
</form>
|
55
|
+
<div>
|
56
|
+
<h5>{{ post.up_number }}</h5>
|
57
|
+
</div>
|
58
|
+
{% endfor %}
|
29
59
|
|
60
|
+
```
|
61
|
+
|
62
|
+
#blog/views.py
|
63
|
+
```python
|
64
|
+
from django.shortcuts import render
|
65
|
+
from django.utils import timezone
|
66
|
+
from .forms import PostForm
|
67
|
+
from .models import Post
|
68
|
+
|
69
|
+
def post_list(request):
|
70
|
+
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
|
71
|
+
return render(request, 'blog/post_list.html', {'posts': posts})
|
72
|
+
|
73
|
+
#分からないポイント
|
74
|
+
def post_form(request):
|
75
|
+
|
76
|
+
if request.method == 'POST':
|
77
|
+
|
78
|
+
post.up_number = int(post.cleaned_data['up_number']) + 1
|
79
|
+
|
80
|
+
post.save()
|
81
|
+
|
82
|
+
|
83
|
+
```
|
84
|
+
|
85
|
+
|
86
|
+
|
87
|
+
|
30
88
|
### 補足情報(FW/ツールのバージョンなど)
|
31
89
|
OS Windows10
|
32
90
|
python 3.7.3
|