Django機能
プロジェクト構造の作成
プロジェクト構造の作成
snsの機能を考えると、次の3つくらいあります.
「書く」と「ユーザー」の2つの機能があります.
$ django-admin startapp user
$ django-admin startapp tweet
パイトステーションで上記のドラム鳴きプロジェクトの設定
アプリケーションを作成したら、プロジェクトにDjangoに知らせるように通知する必要があります.
初めて作成した「mySpartSNS」フォルダの「settings」.pyを変更します.
データベースとDjango ORM
オブジェクト関係マッピング(ORM)は
データベースは、SQL言語ではなく、オブジェクトブロックとして扱いやすくできます.つまり、クラスをデータベースとして作成して使用することができます.
1.ユーザーモデルの作成
Djangoは基本的にユーザーモデルを提供します.ユーザーの管理とログイン/ログアウトが実現しました.
しかし勉強のために、自分で作ってDjangoが提供するモジュールを使います.
ユーザー・アプリケーションのモデル.pyファイルに次のコードを入れます.#user/models.py
from django.db import models
# Create your models here.
class UserModel(models.Model):
class Meta:
db_table = "my_user"
username = models.CharField(max_length=20, null=False)
password = models.CharField(max_length=256, null=False)
bio = models.CharField(max_length=256, default='')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Class MetaはDB Tableに名前を指定するなどモデル情報を特定する役割を果たす.ここではテーブルの名前しか指定していません.
1)Djangoモデルフィールドのタイプ
djangoが提供するモデルを使用して、各要素にどのデータ型が含まれるかを指定し、各フィールドを制限できます.
#user/models.py
from django.db import models
# Create your models here.
class UserModel(models.Model):
class Meta:
db_table = "my_user"
username = models.CharField(max_length=20, null=False)
password = models.CharField(max_length=256, null=False)
bio = models.CharField(max_length=256, default='')
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
1)データベースの変更を示すコマンドmakemigration
-障害のあるサーバを停止します.
-端末に次のコードを追加
```Bash
python manage.py makemigrations
```
![](https://media.vlpt.us/images/hijyun/post/d8c2052b-6b9a-4f11-a5ec-8c0b866d7e7d/image.png)
장고가 데이터베이스가 생성된걸 알았다고 나온다.
2) 변경된 데이터베이스를 적용시켜주는 migrate
```Bash
python manage.py migrate
```
作成したテーブルはよく生成されていることがわかります.
Django Admin
記事にあらかじめ構築された管理者ページを作成する機能.
-admin機能について
1. createsuperuser
端末に次のコマンドを入力します.python manage.py createsuperuser
パスワードを入力するとsuperuserが成功すると、管理者アカウントが作成されます.
2.admin画面
運転障害後
http://127.0.0.1:8000/admin
adminページにログインし、作成したばかりのアカウントを使用してログインします.
上記のページが表示されます.
3.登録型番
ユーザーアプリケーションのadmin.次のコードをpyファイルに挿入します.from django.contrib import admin
from .models import UserModel
# Register your models here.
admin.site.register(UserModel) # 이 코드가 나의 UserModel을 Admin에 추가 해 줍니다
再びAdministrationページにアクセスすると、UserModelが入っていることがわかります.
ユーザー管理とログイン
スクリーンオフセット
python manage.py createsuperuser
from django.contrib import admin
from .models import UserModel
# Register your models here.
admin.site.register(UserModel) # 이 코드가 나의 UserModel을 Admin에 추가 해 줍니다
スクリーンオフセット
ドラムのテンプレート文法.htmlファイルの作成を続行したり、htmlファイルにPythonの機能を導入したりして、htmlドキュメントの重複作成を避けることができます.
まず、userアプリケーションでurlsを使用します.pyを作成します.ここではuser appに関連するurlがここで作成されます.
userアプリのurlをmySpartSNSに伝えます.
user appのviewsに次のコードを入力します.
from django.shortcuts import render
# Create your views here.
def sign_up_view(request):
return render(request, 'user/signup.html')
def sign_in_view(request):
return render(request, 'user/signin.html')
user appのurlに次のコードを入力します.from django.urls import path
from . import views
urlpatterns = [
path('sign-up/', views.sign_up_view, name='sign-up'),
path('sign-in/', views.sign_in_view, name='sign-in'),
]
会員加入機能
ex.主に画面の表示やデータの読み出しに使用される
ユーザーアプリケーションのview.pyのsign up view関数にHTTPリクエスト方式を区別するコードを追加します.
# user/views.py
def sign_up_view(request):
if request.method == 'GET': # GET 메서드로 요청이 들어 올 경우
return render(request, 'user/signup.html')
elif request.method == 'POST': # POST 메서드로 요청이 들어 올 경우
return ""
signup.htmlに入力し、<フォーム-画面のデータをサーバに送信するときに使用するタグ>タグ部分を変更します.メソッドにPostを入れ、actionでどのurlに渡すかを指定します.
POSTデータの場合、{%csrf token%}を追加してデータセキュリティを保護できます.
その後の見方.pyに次の内容を追加します.
ログイン機能
≪セッション|Sessions|ldap≫:ユーザーの情報を保存できます.サーバとクライアントの間でリクエストと応答が発生したときに、同じ人がリクエストを発行することを確認します.
url、ビューの設定
views.pyのsign in viewでPOSTを追加登録処理の関数として作成します.
```python
user/views.py
from django.http import HttpResponse
def sign_in_view(request):
if request.method == 'POST':
return HttpResponse(「ログイン成功!」)
elif request.method == 'GET':
return render(request, 'user/signin.html')```
```
signin.htmlのフォームラベルプロパティのクエリー
viewのログイン操作を完了
userアプリケーションのsign in view関数にログイン機能を追加する
# user/views.py
def sign_in_view(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
return HttpResponse("로그인 성공!")
elif request.method == 'GET':
return render(request, 'user/signin.html')
Reference
この問題について(Django機能), 我々は、より多くの情報をここで見つけました https://velog.io/@hijyun/2주차-Django-기능テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol