学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Django3.2 | クラウドソーシングアプリの構築 | 15 | 依頼者モデル

↓↓クリックして頂けると励みになります。


14 | プロフィール】 << 【ホーム】 >> 【16 | アバター


画像を読み込んで自由に編集できる機能「Pillow」をインストールします。


コマンド
pip install Pillow==10.0.0


バージョンを確認します。
コマンド
pip freeze > requirements.txt


バージョン確認 【Desktop/crowdsource/requirements.txt】

asgiref==3.7.2
beautifulsoup4==4.12.2
certifi==2023.7.22
cffi==1.15.1
charset-normalizer==3.2.0
cryptography==41.0.3
defusedxml==0.7.1
Django==3.2.20
django-bootstrap4==2.3.1
idna==3.4
oauthlib==3.2.2
Pillow==10.0.0
pycparser==2.21
PyJWT==2.8.0
python3-openid==3.2.0
pytz==2023.3
requests==2.31.0
requests-oauthlib==1.3.1
six==1.16.0
social-auth-app-django==4.0.0
social-auth-core==4.4.2
soupsieve==2.5
sqlparse==0.4.4
typing_extensions==4.7.1
urllib3==2.0.4


「core/models.py」ファイルを編集します。


記述編集 【Desktop/crowdsource/core/models.py】

from django.db import models
from django.contrib.auth.models import User

# Create your models here.
class Customer(models.Model):
  user = models.OneToOneField(User, on_delete=models.CASCADE)
  avatar = models.ImageField(upload_to='customer/avatars/', blank=True, null=True)

  def __str__(self):
    return self.user.get_full_name()



マイグレーションファイルを作成します。
コマンド
python manage.py makemigrations


マイグレーションを適用します。
コマンド
python manage.py migrate


「core/admin.py」ファイルを編集します。


記述編集 【/Users/heyjude/Desktop/crowdsource/core/admin.py】

from django.contrib import admin
from . import models

# Register your models here.
admin.site.register(models.Customer)



管理画面にCustomerが追加されているのを確認します。

管理画面確認
管理画面確認



Middlewareを実装します。


「crowdsource/core」フォルダに「middleware.py」ファイルを新規作成します。


新規作成 【Desktop/crowdsource/core/middleware.py】

from .models import Customer

class ProfileMiddlware:
  def __init__(self, get_response):
    self.get_response = get_response
    # One-time configuration and initialization.

  def __call__(self, request):
    # Code to be executed for each request before
    # the view (and later middleware) are called.
    if request.user.is_authenticated and not hasattr(request.user, 'customer'):
      Customer.objects.create(user=request.user)


    response = self.get_response(request)

    # Code to be executed for each request/response after
    # the view is called.

    return response



「crowdsource/settings.py」ファイルを編集します。


記述追加 【Desktop/crowdsource/crowdsource/settings.py】55行目

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'social_django.middleware.SocialAuthExceptionMiddleware',
    'core.middleware.ProfileMiddlware', #追加
]



登録ユーザーからCustomerに追加できることを確認してください。

Customerに追加
Customerに追加


↓↓クリックして頂けると励みになります。


14 | プロフィール】 << 【ホーム】 >> 【16 | アバター