1
1
"""Examples of class-based views."""
2
2
from datetime import datetime
3
3
4
- from django .http import HttpResponseRedirect
5
4
from django .conf import settings
5
+ from django .contrib .auth .mixins import PermissionRequiredMixin
6
+ from django .core .mail import send_mail
7
+ from django .http import HttpResponseRedirect
8
+ from django .shortcuts import get_object_or_404 , render
6
9
from django .views import View
7
10
from django .views .generic import RedirectView
8
11
from django .views .generic .base import TemplateView
9
12
from django .views .generic .edit import FormView
10
- from django .shortcuts import render , get_object_or_404
11
- from django .contrib .auth .mixins import PermissionRequiredMixin
12
- from django .core .mail import send_mail
13
13
14
14
from .forms import ContactForm
15
15
from .models import PostModel
16
16
17
17
18
18
class GenericClassView (View ):
19
19
"""Generic class-based view."""
20
- initial = {'key' : 'value' }
20
+
21
+ initial = {"key" : "value" }
21
22
22
23
def get (self , request , * args , ** kwargs ):
23
24
posts = PostModel .get
24
- return render (request , self .template_name , {' form' : ' tbh' })
25
+ return render (request , self .template_name , {" form" : " tbh" })
25
26
26
27
def post (self , request , * args , ** kwargs ):
27
28
form = self .form_class (request .POST )
28
29
if form .is_valid ():
29
- return HttpResponseRedirect (' /success/' )
30
+ return HttpResponseRedirect (" /success/" )
30
31
31
- return render (request , self .template_name , {' form' : form })
32
+ return render (request , self .template_name , {" form" : form })
32
33
33
34
34
35
class TemplateClassView (TemplateView ):
35
36
"""Serve a page template."""
36
- template_name = 'class_views/template_class_view.html'
37
+
38
+ template_name = "class_views/template_class_view.html"
37
39
38
40
# change the get method to get_context_data
39
41
def get_context_data (self , ** kwargs ):
40
42
context = super ().get_context_data (** kwargs )
41
- context [' now' ] = datetime .now ()
42
- context [' title' ] = ' Class-based Template View'
43
- context [' path' ] = self .template_name
43
+ context [" now" ] = datetime .now ()
44
+ context [" title" ] = " Class-based Template View"
45
+ context [" path" ] = self .template_name
44
46
return context
45
47
46
48
@@ -49,28 +51,30 @@ class ProtectedClassView(PermissionRequiredMixin, TemplateView):
49
51
50
52
def get_context_data (self , ** kwargs ):
51
53
context = super ().get_context_data (** kwargs )
52
- context [' now' ] = datetime .now ()
54
+ context [" now" ] = datetime .now ()
53
55
return context
54
56
55
57
56
58
class RedirectClassView (RedirectView ):
57
59
"""Permanent redirect view."""
60
+
58
61
# https://docs.djangoproject.com/en/3.0/ref/class-based-views/base/#redirectview
59
62
permanent = False
60
63
query_string = True
61
- pattern_name = ' article-detail'
64
+ pattern_name = " article-detail"
62
65
63
66
def get_redirect_url (self , * args , ** kwargs ):
64
- article = get_object_or_404 (PostModel , pk = kwargs ['pk' ])
67
+ article = get_object_or_404 (PostModel , pk = kwargs ["pk" ])
65
68
article .update_counter ()
66
69
return super ().get_redirect_url (* args , ** kwargs )
67
70
68
71
69
72
class ContactView (FormView ):
70
73
"""Form-based view."""
71
- template_name = 'class_views/contact_class_template.html'
74
+
75
+ template_name = "class_views/contact_class_template.html"
72
76
form_class = ContactForm
73
- success_url = ' /success/'
77
+ success_url = " /success/"
74
78
75
79
def get (self , request , * args , ** kwargs ):
76
80
context = self .get_context_data (** kwargs )
@@ -83,13 +87,13 @@ def form_valid(self, form):
83
87
@staticmethod
84
88
def send_email_message (valid_data ):
85
89
send_mail (
86
- valid_data .get (' subject' ),
87
- valid_data .get (' email' ),
88
- valid_data .get (' message' ),
90
+ valid_data .get (" subject" ),
91
+ valid_data .get (" email" ),
92
+ valid_data .get (" message" ),
89
93
[settings .SENDGRID_TO_EMAIL ],
90
94
fail_silently = True ,
91
95
)
92
96
93
97
def form_invalid (self , form ):
94
98
"""If the form is invalid, render the invalid form."""
95
- return self .render_to_response (self .get_context_data (form = form ))
99
+ return self .render_to_response (self .get_context_data (form = form ))
0 commit comments