flaskでmysqlを使ってローカルDBを作る
全体の流れ
全体の流れとしては、
- まずコマンドプロンプトに管理者としてアクセス
- mysqlサーバーを立ち上げ、
- ログインしてデータベースを作成。
- vscodeに戻り、
- テーブル名と追加したいカラムを定義
- レコードをおまじないのように書き追加して作成。
まずローカルDBを立ち上げます。
まずコマンドプロンプトと検索して
管理者として実行を押します。
mysql --version
でmysqlのバージョンを調べ
net start mysql80
でmysqlを起動します。
既に起動されている場合はこの工程は無視してください。
なお下記のコマンドでmysqlを停止できます。
net stop mysql80
mysqlにログイン
なお次に下記のコマンドを入力してログインします。
mysql --user=root --password
このように表示されたら成功です。
show databases;
でデータベースを表示することが可能です
データベースの作成。
CREATE DATABASE データベース名;
でデータベースを作成する事ができます。
データベース削除
drop database 削除したいデータベース名;
でデータベースを削除する事ができます。
作成したデータベースをFlaskに繋げる。
まずは
pip install Flask-SQLAlchemy
と
pip install pymysql
をインストールします
そして下記をインポートして
先ほどはサーバー内にデータベースを作りましたが、
今度はでデータベース内にテーブルを作っていきます。
class Memo(db.Model):
"""
Memoモデルの定義
"""
__tablename__ = "memos"
id = db.Column("id", INTEGER(11), primary_key=True)
memo = db.Column("memo", VARCHAR(255), nullable=True)
# テーブルの生成
db.create_all()
クラスと
__tablename__ = "memos"
で、テーブル名を定義して、
その下にカラムを追加していきます。
それで終わり。
後は基本的にhtmlのフォームの内容をpythonで取得して、
レコードに挿入したり
取り出したりする。
下記はサンプルコード。
ログイン機能。
flaskとherokuでアプリを作る方法
flaskとherokuでアプリを作る方法
まずサイト名の入ったフォルダを作成
その中にapp.pyファイルを作る
その後仮想環境を作っていこう。
python -m venv (仮想環境名)
を実行して、仮想環境を作り
(仮想環境名)\Scripts\activate.ps1
で仮想環境に入ろう。
そして今回必要依存パッケージは
flask、
なので
pip install flask
でインストールしていく
次にtemplatesフォルダとstaticフォルダを作成し、その下にhtmlファイルcssフォルダを作成して、その下にcssファイルを作成しよう。
appファイル内を下記のように記載して
from flask import Flask
from flask import Flask, render_templateapp = Flask(__name__, static_folder='./static')
@app.route('/')
def index():
return render_template('index.html')if __name__ == "__main__":
app.run(debug=True,host='0.0.0.0', port=5000)
次にhtml内を下記のように記載してローカルサーバーを起動させてhtml、cssの効いたh1タグが表示されるか確認しよう。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Roboses</title><link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"
rel="stylesheet"><link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
</head>
<body>
<h1>aaaaaaaaaaaaa
</h1>
</body>
</html>
ファビコン
次にファビコンを設定していこう
ファビコンとはサイトページ上の小さなアイコンのことだ。
まずファビコンファイル(.ico)を作成していく
にアクセスしてま頑張ってくれ
ファビコンファイルが完成したら、staticフォルダの下にimagesフォルダを作成してそこに保存してくれ
そしてhtmlファイルに
<link rel="icon" type="image/x-icon" href="{{ url_for('static', filename='images/favicon.ico') }}" />
を追加して完了だ。
ブートストラップ
さてここからはブートストラップを使ってuiを構築していこう
ブートストラップとはTwitter社が開発したフレームワークらしい。
簡単に言うとmedeiaクエリを使わずに自動的にレスポンシブデザインを構築してくれる便利な物
herokuデプロイ
Herokuをデプロイするにあたって必要ファイルがあるのでそこを用意していきましょう
・Procfile
・requirements.txt
・runtime.txt
まずをインストールして
・Procfile
Procfileという名前のファイルを作成して
ファイル内に
web: gunicorn <実行するファイル名>:app --log-file=-
を作りましょう。
※この時、拡張子はなしで保存しましょう!
・requirements.txt
requirements.txtは下記を打ち込むだけです
pip freeze > requirements.txt
・runtime.txt
runtime.txtファイルを作成して
python -V
pythonのバージョンを確認して
だったので
Python-3.11.1
と打ち込みましょう。
ここからだ
そしてコマンドから
heroku login --interactive
または
heroku login
と打ち込みHerokuにログインします。
heroku login --interactive
の場合パスワードはapi keyを入力しましょう。
ログインできたら
heroku create <好きなアプリケーション名>
とコマンドに打ち込んでHeroku上にアプリを作成しましょう。
そしてプッシュしていきます。
なお初プッシュする際はこのように入力してください。
git remote add heroku
.gitは
https://git.heroku.com/(自分のアプリ名).git
にしてください。
なお
デプロイする際は
を削除
これでプッシュしてデプロイできる
git push heroku master
変更を再デプロイする際は
git add .
git commit -m "Fix Testdbs model and form"
git push heroku master
ドメインを独自ドメインに…
これを最初に見たあとに
を見ればできるはず
ssl化
https://dash.cloudflare.com/57b22a86199e36627a668e5765af89c4
herokuデプロイ。
【Python/Flask】作成したアプリをHerokuで公開する方法(Windows、Mac編)
herokuを使ってPythonのflaskで作ったアプリケーションをデプロイする方法と注意点!|スタビジ
上記二つを見れば何とかなる。
ログインする際は
heroku login --interactive
を実行あとパスワードはapiキーを入力。
アプリ名は小文字を使う。
今回と前回のruntime.txtは
python-3.11.0
requirements.txtは
初コミットする際は、
メールとユーザー名を登録。
初プッシュする際は
git remote add heroku https://git.heroku.com/roboses-g2023418.git
太文字の後ろはアプリごとにかわる。
デプロイする際は
を削除
これでプッシュしてデプロイできる
git push heroku master
独自ドメインのやり方は下記を参照しろ。
変更を再デプロイする際は
git add .
git commit -m "Fix Testdbs model and form"
git push heroku master
dbの設定はこちら
特定商取引法に基づく表記
販売事業者名 | ご請求書があり次第提供します。事業者の電話番号またはメールアドレスにてご連絡ください。 | |
所在地 | ご請求書があり次第提供します。事業者の電話番号またはメールアドレスにてご連絡ください。 | |
電話番号 | 090-76959249 | |
メールアドレス | 2ccvmcc02@gmail.com | |
運営統括責任者 | ご請求書があり次第提供します。事業者の電話番号またはメールアドレスにてご連絡ください。 | |
追加手数料等の追加料金 | 特になし | |
交換および返品(返金ポリシー) |
<お客様都合の返品・解約の場合>
返品についてはお受けしておりません。予めご了承ください。 |
|
引渡時期 |
購入後すぐにご利用いただけます。 |
|
受け付け可能な決済手段 | クレジットカードでのお支払い |
|
決済期間 | クレジットカード決済の場合はただちに処理されます | |
販売価格 | 税込490円 |
django新規登録機能。
今回は、djangoによる、新規登録機能を作っていきます。
まずはフォルダのパス設定を行います。
フォルダのパス設定
プロジェクト/settings.pyに行き
Template(HTML)、static(CSS)、及びmedia(画像)フォルダのディレクトリ指定をしていきます。
これは上記をコピペしましょう。
つぎは、settings.py内のTEMPLATESリストを見つけ
'DIRS': [],
こん中を
'DIRS': [TEMPLATE_DIR,],
こうしましょう。
その次は、
これがあるところに移動し、
その下に
STATICFILES_DIRS = [STATIC_DIR,]
#MEDIA_DIR
MEDIA_ROOT = MEDIA_DIR
MEDIA_URL = "/media/"
こいつらをコピペしましょう。
これにてディレクトリ設定は完了です。
パスワードのハッシュ化設定
まずはsettings.py内の
AUTH_PASSWORD_VALIDATORS
リストを見つけましょう。
そして、この中に、
こちらをコピペします。
次に、パスワードの強度を定義するために、
PASSWORD_HASHERSの下のAUTH_PASSWORD_VALIDATORSを編集します。
MinimumLengthValidatorの下に
上記をコピペします。
ちなみにこの6の意味は、パスワードの強度で、パスワードの最小単位を設定しています。
つまりこの設定をしたので、5桁のパスワードは登録されません。
6桁以上のパスワードだけが登録されます。
これで、settings.pyの設定は終了です。
モデルの設定
次はモデルの設定をしていきます。
はいー
いつも通りapp/のmodels.pyを開き
上記をコピペします。
そして保存して
DjangoWebアプリ、urls.pyとviews.pyについて、
まずdjangoのurls.pyとviews.pyですることは、
簡単に言うと、
urls.pyでURLを設定します。(このpathにアクセスされたら、このviews.pyを表示するなど)
views.pyでページに表示する内容を設定します。(htmlファイルを指定したり、)
urls.pyについて
まず、通常urlはapp内のurls.pyで設定するので、app/urls.pyに移動するコードをプロジェクト/urls.pyに書く必要があります。
にincludeを追加し、
from django.urls import path, include #追加
こうします。
そして、ここに
include("app名urls")を追加します。
djangoでwebアプリを作ろうの会
今回の記事はdjangoを使ってwebアプリを作りながら書いていこうと思います。
- 人類はなぜ仮想環境を作るのか?
- 仮想環境の作り方
- 最初にフォルダ
- 仮想環境に入る方法
- 仮想環境を終了する方法
- djangoをインストール…
- インストールされてるか確認
- ~インストールしたらやる事~
- プロジェクトとアプリとは?
- プロジェクトの作り方
- サーバーを立ち上げよう
- サーバーを停止しよう。
- アプリの作り方
- 初期設定
- モデルを作成
- テーブルを作成
- モデルを定義したら…
- マイグレーションファイルを作成
- データベースにテーブルを作成
- 管理サイト(admin)にアクセスする
- アクセスしたら…
- ユーザーを作成
- ログイン
- 何かおかしな点が…
- 管理サイトからモデル(テーブル)を触れるようにする。
- ~参考記事~
まずは仮想環境から…
人類はなぜ仮想環境を作るのか?
私たち人類が誕生してから20万年の月日が勃ちますが"なぜ"私たちは仮想環境を作るのでしょうか
その謎を解き明かすためアマゾンの奥地へと向かった…
そこでは衝撃の事実が!!
なんと人類が仮想環境を作る理由の一つとして言われているのがライブラリはバージョンによって関数などが動かなくなる事があるかららしい
これはライブラリというよりはプログラムはバージョンによって動かなくなる事があるので
使いたい関数などのプログラムを使うためにバージョンを指定することがあるから
仮想環境を作ることによって独立させて、違うバージョンをインストールしてもほかのモジュールに影響を与えないようにするらしい
まあ極端な話、自分の家の蛇口をひねるとリンゴジュースが出てくるような事
をしたいとき
配水池の水にリンゴジュースができる成分を入れたら自分の家だけじゃなくて隣の家もリンゴジュースが出てきてしまうだろう。
配水池とは、消毒が全て完了した浄水を配水する前に一時的に蓄えておく浄水場内の設備
なので自分の家専用の配水池を作って、”独立”させる必要がある。
この独立が仮想環境だと思えばいい。
仮想環境の作り方
今回はvenvで仮想環境を作ろうと思うので、作り方を解説していこうと思う。
最初にフォルダ
まず、適用にフォルダを作り(今回はtetフォルダを作成した)
cd (フォルダ名)
で移動して、
python -m venv (仮想環境名)
というコマンドを実行し
これだと仮想環境を作成しただけなので、仮想環境
に入る必要があります。
仮想環境に入る方法
仮想環境に入る方法は
(仮想環境名)\Scripts\activate.ps1
というコマンド実行したら、仮想環境に入る事ができます。
仮想環境を終了する方法
おまけで仮想環境を終了する方法を書いていきます。
仮想環境を終了する方法は
deactivate
このコマンドを実行するだけです。
それでは!仮想環境が構築できたらdjangoをインストールしていきましょう!
djangoをインストール…
これは普通にpipで‼
pip install django
完了‼
インストールされてるか確認
インストールされてるか確認する方法は
pip freeze
か
pip list
で確認しましょう。
~インストールしたらやる事~
本記事の目的は、webアプリを作ることです。
なのでwebアプリを作る上でやる事は、djangoをインストールしたら、プロジェクトとアプリを作りましょう。
プロジェクトとアプリとは?
webアプリといえばtwitterなど色々ありますが、twitterにはフォローやいいねなど…様々な機能があります。
この様々な機能の総称がdjangoでは、プロジェクト、といい
フォローなどの一つ一つの機能は、アプリといいます。
djangoにおける、プロジェクトとアプリについてなんとなく理解したら、
早速プロジェクトとアプリを作っていきましょう。
プロジェクトの作り方
プロジェクトの作り方は
django-admin startproject (プロジェクト名)
で作ることが出来ます。
サーバーを立ち上げよう
プロジェクトができたら、
cd (プロジェクト名)
プロジェクトに移動して、
下記のコマンドを実行し、
python manage.py runserver
サーバーを立ち上げましょう。
ターミナルにurlが表示されたら、urlにアクセスし、
下記のようになれば、成功です。
サーバーを停止しよう。
おまけ…
サーバーを停止するはターミナルをクリックし、(ctrl+c)で停止できます。
アプリの作り方
アプリも同様コマンド一つで立ち上げ可能です。
python manage.py startapp (アプリ名)
初期設定
さて、プロジェクトとアプリを作成したら、2つ初期設定をしていきます。
1つ目
1つ目はアプリとプロジェクトは今、紐づけされていないのでアプリを登録して紐づけしていく必要があります。
アプリの登録方法
アプリを登録する方法は、settings.pyのINSTALLED_APPSに
"(アプリ名).apps.(アプリ名)Config",
を追加します。
2つ目
2つ目は言語・タイムゾーンの変更をします。
言語・タイムゾーンの変更
言語・タイムゾーンの変更もsettings.pyで行い、
言語は、
ANGUAGE_CODE = 'en-us'
を
ANGUAGE_CODE = 'ja'
に変更して。
タイムゾーンは、
TIME_ZONE = 'UTC'
を
TIME_ZONE = 'Asia/Tokyo'
に変更します。
これで、初期設定は終了です。
モデルを作成
次にモデルを作成していきましょう。
モデルとは?
モデルとは、webアプリとデータベースを操作できるファイルです。
テーブルを作成
それでは早速テーブルを作成して、モデルを定義していきます。
テーブルの作成方法は、models.pyにテーブルと同じ名前のクラスを作り、
class テーブル名(models.Model):
クラス変数にカラムを持ってきます。
カラム=models.関数()
モデルを定義したら…
models.pyにテーブルを作成したらマイグレーションファイルを作る必要があります。
ちなみにmodels.pyにテーブルを追加したり、編集したらmodels.pyのコードをクリックして「ctrl+s」で保存してから、マイグレーションファイルを作るまたは、上書きする必要があるので、覚えておきましょう。
マイグレーションファイルを作成
マイグレーションファイルを作成する方法は
python manage.py makemigrations
このコマンドで作成することが出来ます。
データベースにテーブルを作成
モデルにテーブルを作成し、マイグレーションファイルを作っても、まだデータベースにテーブルが反映していないので(翻訳しただけなので)作成したマイグレーションファイルをデータベースに反映していきましょう。
python manage.py migrate
反映作業もコマンド一つで、可能です。
管理サイト(admin)にアクセスする
次に管理サイトにアクセスしていきましょう。
管理サイトにアクセスする方法は、サーバーを立ち上げてurlディスパクチャを(/admin)にしてアクセスできます。
管理サイトとは?
管理サイトは、モデルに定義したレコードのクラッド(CRUD)をする時に使うサイトです。
Create(クラッド)とは、(登録)、Read(参照)、Update(更新)、Delete(削除)のことです。
つまり、管理サイトとはブログでいうと、ブログを書いたり削除したり、編集するサイトのことを指します。
アクセスしたら…
アクセスしたら、ログイン画面がでてくるとおもいます。
ただ、ログイン以前にユーザー登録してないと思うので、ユーザー登録をして、管理者権限を持つ必要があります。
ユーザーを作成
ユーザーを作成する方法は下記のコマンドを実行して
python manage.py createsuperuser
ユーザー名、メールアドレス、パスワードが聞かれるので、メールアドレスは必要ないので、パスワードとユーザー名を登録しましょう。
なお、パスワードを入力する際入力しても文字が表示されませんが、入力できているので、きにせずに…
ログイン
では、ユーザー登録ができたら、管理サイトを開いてログインしてみましょう。
ログインできたらこのような画面が表示されます。
何かおかしな点が…
な、な、なんと!先ほど作成したモデルのレコードか管理サイトなのに触れないじゃありませんか!!
管理サイトからモデル(テーブル)を触れるようにする。
モデルにテーブルを作成したとしても管理サイトでそのテーブルのレコードが触れるわけではないので、設定する必要があります。
まず、app名/admin.pyを開いてください。app名/admin.pyで管理サイトからモデル(自分が作ったテーブル)を触れるように設定できます。
今回はPostという名前のテーブルを触れるようにしたいので、
(app名/admin.py)に
from app名.models import テーブル名
admin.site.register(テープル名)
を追加します。
追加したらファイルを保存して確認してみましょう。
こうなっていたら成功です!
~参考記事~
仮想環境: Python環境構築ガイド - python.jp