Djangoをインストールする
ターミナルを起動し、次のコマンドを実行してください。
% pip3 install django
Djangoがインストールされているかを確認します。
ターミナルで、次のコマンドを実行してください。
% pip freeze
Laradockを利用して開発環境を作る(データベース)
データベースの作成
laradockディレクトリに移動し、以下のコマンドを実行します。
Uオプションは、.envファイルに定義したDB_USERNAMEの値を入力してください。
% docker-compose exec workspace psql -U default -h postgres
パスワードの入力が求められます。
.envファイルに定義したDB_PASSWORDの値を入力してください。
Password for user default: || パスワードを変更します。 .envファイルに定義したDB_PASSWORDの値も、新しいパスワードに変更します。 >|| default=# ALTER ROLE session_user WITH PASSWORD '任意の文字列';
データベースを作成します。
default=# CREATE DATABASE skillmap;
データの変更と削除の操作を制御する
あるユーザーが登録したデータを、別のユーザーが変更・削除できないように制御します。
Laravelの認可機能のひとつであるポリシーを使って、制御します。
ポリシーを作成します。
以下のコマンドを実行してください。
appディレクトリ - Policiesディレクトリ以下に、ArticlePolicy.phpが作成されます。
% php artisan make:policy BookPolicy --model=Book
ArticlePolicy.phpを以下のように修正してください。
<?php namespace App\Policies; use App\Models\Book; use App\User; use Illuminate\Auth\Access\HandlesAuthorization; class BookPolicy { use HandlesAuthorization; public function viewAny(?User $user) { return true; } public function view(?User $user, Book $book) { return true; } public function create(User $user) { return true; } public function update(User $user, Book $book) { return $user->id === $book->user_id; } public function delete(User $user, Book $book) { return $user->id === $book->user_id; } }
appディレクトリ - Providersディレクトリの AuthServiceProvider.phpを以下のように修正してください。
<?php namespace App\Providers; use App\Policies\BookPolicy; use App\Models\Book; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Gate; class AuthServiceProvider extends ServiceProvider { protected $policies = [ Book::class => BookPolicy::class, ]; public function boot() { $this->registerPolicies(); } }
appディレクトリ - Httpディレクトリ - Controllersディレクトリ の BooksController.phpを以下のように修正してください。
class BooksController extends Controller { public function __construct() { $this->authorizeResource(Book::class, 'book'); } }
あるユーザーが登録したデータを、別のユーザーが変更・削除するとエラー画面に遷移します。
メッセージを日本語化する
configフォルダのapp.phpのlocaleを変更します。
'locale' => 'ja',
メッセージを日本語化した設定ファイルを公開している方のサイトからダウンロードします。
以下のサイトを表示してください。
github.com
Download Zipをクリックしてください。
ダウンロードしたファイルを解凍してください。
解凍後に作成されたフォルダ内のjaフォルダを、Laravelのresourcesフォルダのlangフォルダ以下にコピーしてください。
以上で、メッセージを日本語化する作業は終わりです。
localeとtimezoneを日本語、日本標準時に変更する
configフォルダのapp.phpを変更します。
'locale' => 'ja', 'timezone' => 'Asia/Tokyo',
シーディング機能を使ってデータを登録する
シーダーファイルを作成します。
% php artisan make:seeder BooksTableSeeder
databaseフォルダ - seedフォルダにシードファイルが作成されます。
シーダーファイルに登録するデータを書きます。
<?php use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; class BookTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $book = [ 'title' => '吾輩は猫である', 'author' => '夏目漱石', 'price' => 500 ]; DB::table('books')->insert($book); $book = [ 'title' => '人間失格', 'author' => '太宰治', 'price' => 600 ]; DB::table('books')->insert($book); $book = [ 'title' => '武蔵野', 'author' => '国木田独歩', 'price' => 400 ]; DB::table('books')->insert($book); } }
DatabaseSeederファイルにシーダーファイルを追加します。
<?php use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { $this->call(BooksTableSeeder::class); } }
シーディングを実行します。
% php artisan db:seed
マイグレーション機能を使ってみる
マイグレーションファイルを作成します。
% php artisan make:migration create_books_table
databaseフォルダにマイグレーションファイルが作成されます。
マイグレーションファイルにテーブルのデータ項目を追記します。
public function up() { Schema::create('books', function (Blueprint $table) { $table->increments('id'); $table->text('title')->nullable(false); $table->text('author')->nullable(false); $table->integer('price'); $table->timestamps(); }); }
参考: データベース:マイグレーション 6.x Laravel
空のデータベースを作成します。
% touch database.sqlite
マイグレーションを実行します。
% php artisan migrate