django入門學習-使用者登入
阿新 • • 發佈:2020-12-01
url+view+model+html
在學習了django一個月左右想要談談自己學習的心得,避免大家採坑~
我們以一個簡單的功能來舉例學習 “學生登入模組”
前置條件:是安裝好pycharm和匯入django2.0版本的包
1.我們進入自己要建立專案的路徑
我選擇的是D盤下的新建的pycharmproject目錄下按住shift鍵同時點選滑鼠右鍵,選擇在此處開啟PowerShell視窗的選項,在彈出的視窗輸入:django-admin startproject
如下圖所示就建立好了專案檔案
2.開啟pycharm開啟新建的專案mysite,並新建專案login,如圖所示
3.開始新建models.py
右鍵login專案新增pythonfile 命名urls.py
在models.py中新增如下程式碼
1 from django.db import models 2 Create your models here. 3 class Login(models.Model): 4 id=models.AutoField(primary_key=True) 5 name=models.CharField(max_length=30,unique=True)#unique=Ture,說明name欄位下的資料是唯一的如果傳入重複資料會報錯 6 pwd=models.CharField(max_length=30) 7 8 class Meta: 9 db_bable='login_Person'
4.在mysite專案中找到settings.py找到並把login專案新增到其中如下所示
1 INSTALLED_APPS = [ 2 'django.contrib.admin', 3 'django.contrib.auth', 4 'django.contrib.contenttypes', 5 'django.contrib.sessions', 6 'django.contrib.messages', 7 'django.contrib.staticfiles', 8 'app.apps.AppConfig', 9 'login',]
5.在terminal面板中輸入python manage.py makemigrations
6.看到login專案下的migration中新增了一個0001_initial.py檔案再在terminal面板中輸入python manage.py migrate,此時models.py中login_Person表結構和欄位就遷移好了
7.在mysite專案下的urls.py中新增如下程式碼
1 from django.contrib import admin 2 from django.urls import path, include 3 from app import views 4 urlpatterns = [ 5 path('admin/', admin.site.urls), 6 path('login/',include('login.urls')), 7 ]
在login專案下的urls.py中建立如下程式碼
1 from django.urls import path 2 from login import views 3 4 urlpatterns=[ 5 path('',views.login_views), 6 ]
8.配置好路由後再到相應檢視login_views中編寫相應的方法程式碼如下
1 from django.shortcuts import render, redirect,HttpResponse 2 3 Create your views here. 4 from login import models 5 from login.models import Login 6 def login_views(request): 7 m=request.method 8 # return HttpResponse(m) 9 if m=='GET': 10 return render(request,'login.html')#當請求方式是get方法時會跳轉到login.html頁面,當請求方式是post方法時就會將login.html頁面輸入框中的使用者名稱和密碼獲取到並和資料庫中已有的資料進行對比,將處理結果再響應給請求 11 else: 12 name=request.POST.get('name') 13 pwd=request.POST.get('pwd') 14 person = Login.objects.filter(name=name,pwd=pwd ).count()# 輸入框中傳入的資料和資料庫中已有資料進行對比,有完全相同的一條則顯示登入成功 15 if person==1: 16 return HttpResponse('登入成功!') 17 else: 18 return HttpResponse('使用者名稱密碼錯誤,請重新輸入!')
9.login.html頁面程式碼如下
1 {% load staticfiles %}#引入靜態檔案 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>登入</title> 7 <link rel="stylesheet" href="{% static 'css/login.css' %}"> 8 <script type="text/javascript" src="{% static 'js/login.js' %}"></script> 9 </head> 10 <body> 11 <div class="container"> 12 <form action="/login/" method="post"> 13 {% csrf_token%}#禁止跨域訪問403錯誤 14 <p><label for="username">使用者名稱:</label><input type="text" name="name" id="username" placeholder="請輸入使用者名稱"/></p> 15 <p><label for="u_pwd">密 碼:</label><input type="password" name="pwd" id="u_pwd" placeholder="請輸入密碼"/></p> 16 <p><input id="sub" class="sub" type="submit" value="登入"/></p> 17 </form> 18 <div class="forget"><a id="tip" onclick="tip()">忘記密碼?</a></div> 19 <div class="remind"><label id="remind" style="display: none;font-size:9pt;color: black;">請聯絡xx!</label></div> 20 </div> 21 </body> 22 </html>
10.執行時pycharm要選擇django包進行執行不能單獨執行某個檔案呦~
11.結果如下圖所示