ゼロから開始--djangoプロジェクトの認証コード付きログイン登録ログアウトリスト表示

7820 ワード

一:新規djangoプロジェクト:1.1:フォルダにcmdコマンドdjango-admin startprojectプロジェクト名を入力1.2:pycharmで新規プロジェクトを開くFile/openプロジェクトを作成するパスを見つけてプロジェクトを開く
二:作成環境2.1:pycharmでFile/Settings/projectプロジェクト名/project interpreter/;2.1.1:show all(新しい環境を追加)2.1.2:点+ok
三:djangoモジュールの追加:mysqlclientモジュール3.1:pycharmでFile/Settings/projectプロジェクト名/project interpreter/;3.2:点+検索django選択バージョン2.0.7 install package 3.3:点+検索mysqlclient選択バージョン1.4.0 install packageインストール完了後Terminalにコマンド:python manageを入力.py runserver djangoがインストールに成功したかどうかをテストします.表示されたURLをクリックすると、小さなロケットがインストールに成功したことを示します.
四:mysqlを開いてデータベースを作成する:4.1:cmdに入力:mysql-uroot-p password:12345(自分のパスワードを入力)4.2:データベースshow databasesを表示する;(すべてのデータベースを表示し、作成するデータベースと重複する名前がある場合は削除削除削除データベースdrop databaseデータベース名追加データベースcreate database user
五:mysqlをプロジェクトの下にsetting.pyでDATABASESを見つけて修正:DATABASES={‘default’:{‘ENGINE’:‘django.db.backends.mysql’,#書かれたデータベースの名前‘NAME’:‘user’,#デフォルトのアドレス‘HOST’:‘127.0.0.1’,#ポート番号‘PORT’:3306,#アカウント‘USER’:‘root’,#パスワード‘PASWORD’:‘12345’,}
五:app 5.1の作成:Terminalにコマンドを入力:python manage.py startapp user 5.2:SettingsでINSTALLED_APPS=[‘django.contrib.admin’,‘django.contrib.auth’,‘django.contrib.sessions’,‘django.contrib.messages’,‘django.contrib.staticfiles’,#追加されたappの名前で‘user’を登録し、
]
六:モデルを書くpy作成するテーブル構造class UserInfo(models.Model):username=models.CharField(max_length=20,unique=True,null=False) pwd = models.CharField(max_length=10,null=False)6.2:インデックスファイルの生成:Terminalにコマンドを入力:python manage.py makemigrations実行遷移ファイル:Terminalにコマンドを入力:python manage.py migrateが完了するとmigrationsが0001_現れますinitial.pyは成功してmysqlクライアント入力を開きます:show databases;新しいテーブルが見つかりました.
七:htmlを書く前に追加データを登録してappプロジェクトの下でフォルダtemplatesを作成しなければなりません



    
    Title


{{ msg }}

{% csrf_token %}

八:appプロジェクト/views.py書き込み登録の処理関数from django.shortcuts import render,HttpResponse,redirect from user.models import UserInfo
def register(request): if request.method == ‘GET’: return render(request, ‘register.html’) else: username = request.POST.get(‘username’,’’).strip() pwd = request.POST.get(‘pwd’,’’).strip() next_pwd = request.POST.get(‘next_pwd’,’’).strip()data={}if username=':data['msg']='アカウントが空にならない'#データベースからusernameを取得し、Webページから送信usernameと比較する#返された値が0の場合True 1 Falseがエラーメッセージelif UserInfoを返す.objects.filter(username=username):data['msg']='アカウントは既に存在します'elif pwd=':data['msg']='パスワードは空ではありません'elif pwd!=next_pwd:data[‘msg’]=‘2回のパスワード入力が一致しない’else:#インスタンス化オブジェクトuser=UserInfo()user.username = username user.pwd = pwd user.save()return HttpResponse(‘登録成功去登録’)return render(request,‘register.html’,data)urlsにpath urlpatterns=[path(‘admin/’,admin.site.urls),path(‘register/’,register),]
九:テスト登録に成功した後:mysqlクライアントクエリーテーブルの内容を開く:select*from user_userinfo; データが入っていれば成功
十:loginログインのページを書く.appプロジェクトフォルダtemplatesにloginを書きます.html



    
    Title


{{ msg }}

{% csrf_token %}
{yzm}}1 がはっきり えない
まだ していません

十一:appプロジェクト/views.py書き込みログインの処理関数---ログインに検証コードが入っているので検証コードを生成する関数も書きます#検証コード生成import string import random def get_yzm(): yzm = ‘’ aStr = string.ascii_letters+string.digits for i in range(4): yzm += random.choice(aStr)return yzm#登録の関数def login(request):if request.method == ‘GET’: yzm = get_yzm() data = { ‘yzm’:yzm } request.session[‘yzm’] = yzm return render(request,‘login.html’,data) else: yzm = request.POST.get(‘yzm’,’’).strip() username = request.POST.get(‘username’,’’).strip() pwd = request.POST.get(‘pwd’,’’).strip() data = {} if yzm.lower() != request.session.get(‘yzm’).lower():data[‘msg’]=‘検証コード入力エラー’else:user=UserInfo.objects.get(username=username,pwd=pwd) data = { ‘username’ : user.username } id = user.pk request.session[‘id’] = id return redirect(’/datail/’,data) yzm = get_yzm() data[‘yzm’] = yzm request.session[‘yzm’]=yzm return render(request,‘login.html’,data)urlsにpath urlpatterns=[path(‘admin/’,admin.site.urls),path(‘register/’,register),path(‘logiin/’,logiin),]を追加
12:ログインに成功した後、ジャンプに成功したページ-リスト情報を表示してdatailログインに成功したページを書きます.appプロジェクトフォルダtemplatesにdatailを書きます.html



    
    Title


{% csrf_token %}

{{ user.username }}

ログアウト
{{ user.id }} {{ user.username }} {{ user.pwd }}

十二:appプロジェクト/views.py書き込みdatailログイン成功処理関数#ログイン成功関数def datali(requset):id=requset.session.get(‘id’,’’) if id : user = UserInfo.objects.get(pk=id)data={‘user’:user}return render(requset,‘datail.html’,data)else:return redirect(’/login/’)#リスト内のデータを表示する関数def get_userList(request): userList = UserInfo.objects.all()data={‘userList’:userList}return render(request,‘datail.html’,data)urlsにpath urlpatterns=[path(‘admin/’,admin.site.urls),path(‘register/’,register),path(‘logiin/’,login),path(‘datali/’,datali),]
十三:userlistのリスト表示ページを書く.appプロジェクトフォルダtemplatesにuserlistを書きます.html



    
    Title



    {% for user in userList %}
    
    {% endfor %}
{{ forloop.counter }} {{ user.username }} {{ user.pwd }}

14:appプロジェクト/views.py書き込みuserlistのリストに表示される関数ログアウトの関数#ログアウトの関数def logout(request):request.session.flush() return redirect(’/login/’) def gat_userList(request): userList = UserInfo.objects.all()data={‘userList’:userList}return render(request,‘userlist.html’,data)urlsにpathを追加
urlpatterns = [ path(‘admin/’, admin.site.urls), path(‘register/’,register), path(‘login/’,login), path(‘datali/’,datali), path(‘logout/’,logout), path(‘userList/’,get_userList), path(‘userlist/’,gat_userList),
]
プロジェクトpython manageを実行します.py runserver完活