【django】社内SNSアプリを作ってみる③(signup.py作り込み~ユーザー登録機能の実装)【pythonメモ】

pythonLOGO

ところでpostとgetはどう違うのか

ブラウザからリクエストを投げる時に、追加で入れていく情報の種類、情報の送り方

djangoを使う時は下記の理解でとりあえずOK

フォームを送信するとき→post
それ以外のとき→get

例えば

一般的にページに貼られているリンクをクリックした時は、getでサーバーにリクエストを送っている。

postの場合は、サーバーにフォームを送る時に明示的に表している

なので、signup.htmlを下記のようにPOSTを追加する

views.pyもそれが見えるように改変する

下記、は根本的な部分で間違ってたので、時系列的に少し変になっています

これが何をしているかというと、POSTで送られた時のusernameを格納する返信を作っている。

このusernameはsignup.htmlで定義されているnameとなっている。

3行目のactionはsigninを押した後に、どの画面に飛ばすかを制御するもの”となっているので同じ画面になる。

ただ、押した後は、views.pyにあるifに引っかり、usernameが変数に格納された状態でsignup.htmlを再読み込みする状態となる。

※ {% csrf_token %}はセキュリティ上のおまじない

このままだとデータベースが作られていないのでmakemigrationsでデータセットを作る

その上でスーパーユーザーを作成する

その後サーバーを起動する

http://127.0.0.1:8000/signup/

サインアップ画面で、sato、パスワードを入力してから、スーパーユーザーとしてログイン

http://127.0.0.1:8000/admin/
からログインする
http://127.0.0.1:8000/admin/auth/user/

サインイン画面で入力したユーザーがここに記憶されていれば成功

userテーブルの中身を見てみる

views.py 10行目の

    user = User.objects.create_user(username, ”, password)

これが何なのか調べるために、ちょっと改変する

http://127.0.0.1:8000/signup/

一度クリックしてみると

こんな感じでユーザー一覧が出てくる

ここでadmin画面からもう一度入ってみて、スーパーユーザーのaaaにメールアドレスを設定してみる

ここでメールアドレスは適当に入れたが、確認時は使える自分のアドレスを入れてみる

views.pyの7,8行目については

とするとsatoのメールアドレスを引っ張ってくることができる

重複ユーザーを防ぐ方法

サインインのあったユーザー名と、データベース上のユーザー名を突き合わせて、いなかったら通常の処理をする。

signup.htmlで表示させる

サーバーを立ち上げて、satoでサインインしてみると

うまくいきました。



 

あ、宜しければ・・・。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です