Skip to content

Commit 8454935

Browse files
committed
add new examples pages
1 parent 833b8fa commit 8454935

File tree

5 files changed

+176
-1
lines changed

5 files changed

+176
-1
lines changed

content/pages/examples/django/django-code-examples.markdown

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,10 @@ system built with [Django](/django.html). The code is open source under the
4646

4747
dccnsys is shown on the following code example pages:
4848

49+
* [django.contrib.auth get_user_model](/django-contrib-auth-get-user-model-examples.html)
50+
* [django.contrib.auth.decorators login_required](/django-contrib-auth-decorators-login-required-examples.html)
4951
* [django.urls.path](/django-urls-path-examples.html)
5052

51-
5253
### django-allauth
5354
[django-allauth](https://github.com/pennersr/django-allauth)
5455
([project website](https://www.intenct.nl/projects/django-allauth/)) is a
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
title: django.contrib.auth.decorators login_required Example Python Code
2+
category: page
3+
slug: django-contrib-auth-decorators-login-required-examples
4+
sortorder: 50025
5+
toc: False
6+
sidebartitle: django.contrib.auth.decorators login_required
7+
meta: Python code examples for the Django function login_required from the django.contrib.auth.decorators module.
8+
9+
10+
[Django](/django.html)'s
11+
[login_required](https://docs.djangoproject.com/en/dev/topics/auth/default/#the-login-required-decorator)
12+
function is used to secure views in your web applications by forcing
13+
the client to authenticate with a valid logged-in User. This decorator
14+
is a handy shortcut that can reduce the amount of code in your view
15+
functions and eliminate the need for every function to have
16+
boilerplate like `if not request.user.is_authenticated:`.
17+
18+
19+
## Example 1 from dccnsys
20+
[dccnsys](https://github.com/dccnconf/dccnsys) is a conference registration
21+
web app built in [Django](/django.html). The code is open source under the
22+
[MIT license](https://github.com/dccnconf/dccnsys/blob/master/LICENSE).
23+
24+
[**dccnsys / wwwdccn / registration / views.py**](https://github.com/dccnconf/dccnsys/blob/master/wwwdccn/registration/views.py)
25+
26+
```python
27+
from django.contrib.auth import get_user_model
28+
~~from django.contrib.auth.decorators import login_required
29+
from django.shortcuts import render, redirect
30+
31+
from users.models import generate_avatar
32+
from users.forms import (PersonalForm, ProfessionalForm,
33+
SubscriptionsForm)
34+
35+
User = get_user_model()
36+
37+
38+
~~@login_required
39+
def personal(request):
40+
profile = request.user.profile
41+
if request.method == 'POST':
42+
form = PersonalForm(request.POST, instance=profile)
43+
if form.is_valid():
44+
form.save()
45+
profile.avatar = generate_avatar(profile)
46+
profile.save()
47+
return redirect('register-professional')
48+
else:
49+
form = PersonalForm(instance=profile)
50+
return render(request, 'registration/personal.html', {
51+
'form': form
52+
})
53+
54+
55+
~~@login_required
56+
def professional(request):
57+
profile = request.user.profile
58+
if request.method == 'POST':
59+
form = ProfessionalForm(request.POST, instance=profile)
60+
if form.is_valid():
61+
form.save()
62+
return redirect('register-subscriptions')
63+
else:
64+
form = ProfessionalForm(instance=profile)
65+
return render(request, 'registration/professional.html', {
66+
'form': form
67+
})
68+
69+
70+
~~@login_required
71+
def subscriptions(request):
72+
subscriptions = request.user.subscriptions
73+
if request.method == 'POST':
74+
form = SubscriptionsForm(request.POST, instance=subscriptions)
75+
if form.is_valid():
76+
form.save()
77+
request.user.has_finished_registration = True
78+
request.user.save()
79+
return redirect('home')
80+
else:
81+
form = SubscriptionsForm(instance=subscriptions)
82+
return render(request, 'registration/subscriptions.html', {
83+
'form': form
84+
})
85+
```
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
title: django.contrib.auth get_user_model Example Code
2+
category: page
3+
slug: django-contrib-auth-get-user-model-examples
4+
sortorder: 50024
5+
toc: False
6+
sidebartitle: django.contrib.auth get_user_model
7+
meta: Python code examples for the Django function get_user_model from the django.contrib.auth module.
8+
9+
10+
[Django](/django.html)'s
11+
[get_user_model](https://docs.djangoproject.com/en/dev/topics/auth/customizing/#django.contrib.auth.get_user_model)
12+
function is the appropriate way of referencing the
13+
[Django User model](https://docs.djangoproject.com/en/dev/ref/contrib/auth/#django.contrib.auth.models.User)
14+
rather than a direct import of User.
15+
16+
17+
## Example 1 from dccnsys
18+
[dccnsys](https://github.com/dccnconf/dccnsys) is a conference registration
19+
web app built in [Django](/django.html). The code is open source under the
20+
[MIT license](https://github.com/dccnconf/dccnsys/blob/master/LICENSE).
21+
22+
[**dccnsys / wwwdccn / registration / views.py**](https://github.com/dccnconf/dccnsys/blob/master/wwwdccn/registration/views.py)
23+
24+
```python
25+
## views.py
26+
~~from django.contrib.auth import get_user_model
27+
from django.contrib.auth.decorators import login_required
28+
from django.shortcuts import render, redirect
29+
30+
from users.models import generate_avatar
31+
from users.forms import PersonalForm, ProfessionalForm, SubscriptionsForm
32+
33+
~~User = get_user_model()
34+
35+
36+
@login_required
37+
def personal(request):
38+
profile = request.user.profile
39+
if request.method == 'POST':
40+
form = PersonalForm(request.POST, instance=profile)
41+
if form.is_valid():
42+
form.save()
43+
profile.avatar = generate_avatar(profile)
44+
profile.save()
45+
return redirect('register-professional')
46+
else:
47+
form = PersonalForm(instance=profile)
48+
return render(request, 'registration/personal.html', {
49+
'form': form
50+
})
51+
52+
@login_required
53+
def professional(request):
54+
profile = request.user.profile
55+
if request.method == 'POST':
56+
form = ProfessionalForm(request.POST, instance=profile)
57+
if form.is_valid():
58+
form.save()
59+
return redirect('register-subscriptions')
60+
else:
61+
form = ProfessionalForm(instance=profile)
62+
return render(request, 'registration/professional.html', {
63+
'form': form
64+
})
65+
66+
67+
@login_required
68+
def subscriptions(request):
69+
subscriptions = request.user.subscriptions
70+
if request.method == 'POST':
71+
form = SubscriptionsForm(request.POST, instance=subscriptions)
72+
if form.is_valid():
73+
form.save()
74+
request.user.has_finished_registration = True
75+
request.user.save()
76+
return redirect('home')
77+
else:
78+
form = SubscriptionsForm(instance=subscriptions)
79+
return render(request, 'registration/subscriptions.html', {
80+
'form': form
81+
})
82+
```

content/pages/meta/00-change-log.markdown

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ on GitHub.
1515

1616

1717
## 2019
18+
### August
19+
* Added new [Django](/django-code-examples.html) code examples pages:
20+
* [django.contrib.auth get_user_model](/django-contrib-auth-get-user-model-examples.html)
21+
* [django.contrib.auth.decorators login_required](/django-contrib-auth-decorators-login-required-examples.html)
22+
1823
### July
1924
* Pushed the [3000th commit](https://github.com/mattmakai/fullstackpython.com/commit/180051047a582b9154874b15dccb315600f23300)
2025
to Full Stack Python, a bit over 3 years after the

theme/templates/table-of-contents.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,8 @@ <h3 style="margin-top:16px"><a href="/django-code-examples.html">Django code exa
234234
<h4 class="bp"><a href="/django-conf-settings-examples.html">django.conf.settings</a></h4>
235235
<h4 class="bp"><a href="/django-conf-urls-url-examples.html">django.conf.urls.url</a></h4>
236236
<h4 class="bp"><a href="/django-contrib-admin-examples.html">django.contrib.admin</a></h4>
237+
<h4 class="bp"><a href="/django-contrib-auth-get-user-model-examples.html">django.contrib.auth get_user_model</a></h4>
238+
<h4 class="bp"><a href="/django-contrib-auth-decorators-login-required-examples.html">django.contrib.auth.decorators login_required</a></h4>
237239
<h4 class="bp"><a href="/django-contrib-admin-filters-simplelistfilter-examples.html">django.contrib.admin.filters SimpleListFilter</a></h4>
238240
<h4 class="bp"><a href="/django-core-mail-send-mail-examples.html">django.core.mail.send_mail</a></h4>
239241
<h4 class="bp"><a href="/django-core-mail-messages-emailmessage-examples.html">django.core.mail.messages EmailMessage</a></h4>

0 commit comments

Comments
 (0)