[Django]Pinterestの作成(5)
認証認証システムの実装
次の図に示すように、hello world関数に認証システムに関するif文を記述します.このように書くと、ログインしていない場合にaccounts/hello worldに接続しようとするとloginウィンドウに送信され、ログインしている場合にのみaccounts/hello worldに正常に接続できます.
そう考えると、update、deleteページもログインしたユーザーにアクセスできるようにします.したがって、AccountUpdateViewクラスとAccountDeleteViewクラスでは、次のコードを記述します.
もう一つ修正が必要です.ログインユーザーの情報ではなく、他のユーザーの情報にアクセスしようとすると、これまでに作成されたコードでこれを行うことができます.この問題を解決するには、次のコードを追加します.
また、下図のようにelseゲートに紫禁を置くと、
他のプレイヤーのupdateとdeleteに接続すると、下図のようにアクセスが拒否されます.
スーパーユーザー、メディア関連設定
以上の手順を加えてaccountapはすべて完了しました.今回から、作成するprofileappに関連します.今やっているのはprofileappを作成する仕事です.pinterser/urls.pyを表示すると、adminで接続されたページが表示されます.これがadminアカウント関連ページです.このページに接続するユーザー名を作成するには、次のコマンドを使用してユーザー名を作成します.
python manage.py createsuperuser
また,profileappでは,現在画像を処理するため,メディアの概念を理解する必要がある.設定は、静的ファイルを設定する場合と同じです.pyは次のコードを追加します. また、イメージ管理のため、倉庫に枕を提供しています.次のコマンドを使用して、枕カバーを取り付けます.
pip install pillow
Profileapp起動とModelForm
まずprofileappを作成します.
python manage.py startapp profileapp
設定はaccountappの作成時と同じです.pyにアプリケーションを追加しurlを設定します.そして写真と同じモデルpyを記入します.
Profileという名前のクラスを作成し、ユーザーは長いライブラリのモデルユーザーとして受信し、on deletelt=modelsです.CASCADEとは,ユーザが削除されるとプロファイルも一緒に削除されることを意味する.次に、画像、ニックネーム、情報の3つのフィールドに入力します.
作成したモデルに基づいてフォームを作成できるフォームを作成します.次の図に示すように、ModelFormを使用してMetaクラス内にモデルとフィールドを作成します.
モデルが作成されている以上、migrate操作を行います.
python manage.py makemigrations
python manage.py migrate
Profileappの実装を開始
views.pyとurls.pyを下図に書きます.
では、下図のように履歴書を作成するページが出やすくなります.
では、detailsページにプロファイルを作成するリンクを開きます.下図に示すように、プロファイルがある場合はプロファイル名が表示され、プロファイルがない場合はプロファイルの作成リンクが保留されます.
履歴書の作成を始めましょうその前にhtmlでは、次の図に示すように、フォームラベルにenctype=「multipart/form-data」と記入する必要があります.画像ファイルを読み込むことができます.
次に実行すると、次のエラーが発生します.
また見ます.pyを変更する必要があります.モデルにuserが定義されています.これは、フォームに画像とニックネームのみを入力したエラーです.他のユーザのプロファイルを変更または作成する可能性があるという問題で、サーバ内で作成するためにフォームに受信されませんでした.したがって、ビュー.pyは次のように記述する必要があります.
temp profileに一時保存するデータを要求します.userで情報を送信します.その後、最終的に保存され、元の結果に戻ります.プロファイルを作成し、コミットをクリックして、私のページに入ると、ニックネームは以下のように出力されます.
Profileapp末尾
プロファイルを更新する機能が追加されます.ビューはcreateに似ています.次のように、pyでUpdateViewを作成します.
下図のようにurls.pyも記入します.
下図のように更新します.htmlを作って作ることもあります.
次にdetailsページに変更可能なリンクを掛けます.次のようにします.
修正ページに入ると、次のような写真が表示されます.
そして、今でもあなたに写真を見せたいのですが、以下の写真と同じコードを書いても写真が撮れません.
この問題を解決するにはurlsを使用します.pyはメディア関連の設定が必要です.下の図のように、サーバーが正常に写真を表示するには、コードを書く必要があります.
get success url関数とrefactoring
success urlを変更したいのですが、プロファイルの作成または変更時にdetailページに接続したいのです.でもdetailの後ろにpkがついて直接入れないクラスだからそうです.だから、次の写真のように関数を書いてこそ、私たちが望んでいる論理に従って正常に動作することができます.
また、プロファイルもログインしたユーザーのみが変更でき、ログインしていないユーザーは以下の写真でdetailsページをifゲートに変更して他の画面を表示することができます.
こうしてProfileAppが完成しました
Reference
この問題について([Django]Pinterestの作成(5)), 我々は、より多くの情報をここで見つけました https://velog.io/@cychann/Django-Pinterest-만들기-5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol