Django實戰之使用者驗證登入
阿新 • • 發佈:2018-11-21
歡迎參與個人獨立開發的閱時即查web APP公測,請掃碼體驗:
基本環境搭建請閱讀Django開發環境搭建
一、為應用配置穩定資料庫(以postgresql為例,系統為Ubuntu12.04 64bit)
1.安裝資料庫:sudo apt-get install postgresql
資料庫的基本命令如下:
\password:設定密碼
\q:退出
\h:檢視SQL命令的解釋,比如\h select。
\?:檢視psql命令列表。
\l:列出所有資料庫。
\c [database_name]:連線其他資料庫。
\d:列出當前資料庫的所有表格。
\d [table_name]:列出某一張表格的結構。
\du:列出所有使用者。
\e:開啟文字編輯器。
\conninfo:列出當前資料庫和連線的資訊。2.使用預設使用者登入資料庫:sudo -u postgres psql
- 3.建立你自己的資料庫使用者和資料資料庫並將此資料庫的所有許可權賦予你自己的資料庫使用者,例如你的資料庫使用者名稱為blog,資料庫名稱為blog_database,密碼為blog,則可依次執行以下命令:
- create user blog with password ‘blog’;
- create database blog_database owner blog;
- grant all privileges on database blog_database to blog;
- 4.修改專案配置檔案,更改DATABASES配置項為以下
注意:如果在後期開啟服務或者資料操作的時候出現psycopy2模組錯誤可以使用pip命令安裝此模組,這是資料庫驅動模組
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'blog_database' , 'USER': 'blog', 'PASSWORD': 'blog', 'HOST': '127.0.0.1', 'PORT': '5432', }}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 5.進行資料庫遷移連線,在專案目錄下執行以下命令:
python manage.py migrate
二、建立應用(以名為blog的部落格應用為例)
- 1.建立應用,命令:python manage.py startapp blog
建立成功後blog的目錄結構如下: - 2.編寫第一個view函式:
blog/views.py
from django.shortcuts import get_object_or_404, render,render_to_responsefrom django.http import HttpResponseRedirect, HttpResponse,HttpResponseRedirectfrom django.urls import reversefrom .models import superuserfrom django.template import RequestContextdef login(request):#登陸頁面 return render(request, 'blog/login.html',)def loginVerify(request):#登陸資訊提交驗證 if request.method == 'POST': username = request.POST['username'] password = request.POST['password'] users = superuser.objects.all() for user in users: if user.username == username and user.password == password: user_list = superuser.objects.all() context = {'user_list': user_list} return HttpResponse('1') return HttpResponse('-1') else: return HttpResponse('0')def index(request):#登陸成功之後跳轉的頁面 user_list = superuser.objects.all() context = {'user_list': user_list} return render(request, 'blog/index.html', context)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 3.編寫與檢視對應的url
blog/urls.py(如果應用中沒有需要手動建立)
from django.conf.urls import urlfrom . import viewsurlpatterns = [ url(r'^$', views.login, name='login'), url(r'^loginVerify/$',views.loginVerify, name='loginVerify'), url(r'^index/$', views.index, name='index'),]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 4.將應用的URLconf包含到專案中去,需要修改專案的urls.py檔案如果你的專案名字叫blogSystem,則檔案位置為blogSystem/blogSystem/urls.py
from django.conf.urls import include, urlfrom django.contrib import adminurlpatterns = [ url(r'^blog/', include('blog.urls')), url(r'^admin/', admin.site.urls),]
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 5.編寫模型類(簡單的使用者模型,登入功能需要使用)
blog/models.py
from django.db import models# Create your models here.class superuser(models.Model): username = models.CharField(max_length=50) password = models.CharField(max_length=50) create_date = models.DateTimeField('date published')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
6.將應用包含進專案中,需要修改專案的配置檔案,即在INSTALLED_APPS配置列表後面增加你的應用名稱
7.模型啟用和資料表建立,需要依次執行以下命令
- python manage.py makemigrations blog
- python manage.py sqlmigrate blog 0001
- python manage.py migrate
三、開啟伺服器(埠可根據個人喜好指定)
只限本機訪問
直接在專案目錄中執行命令: python manage.py runserver 8888- 可在區域網或者公網訪問(裝逼小技巧)
- 首先要更改django框架中的http配置檔案request.py,例如我的檔案目錄是[email protected]:~/python/python3.5/lib/python3.5/site-packages/django/http,開啟此目錄下request.py檔案找到這一部分
在allowed_hosts列表中新增一項‘*’,這樣即可監聽所有可達ip了,此情況下開啟服務的命令變為python manage.py runserver 0:8000,0是0.0.0.0的簡寫。
使用者登入功能的實現
- 1.設計使用者登入頁面
- 2.登入驗證(分為前後端,後端驗證在blog/view.py中的loginVerify函式中)
主要程式碼為ajax提交驗證和後端驗證反饋,此處利用jQuery ajax進行提交,首先進行前端驗證,前端驗證通過之後進行提交後端驗證資料庫,根據資料庫的驗證結果返回對應錯誤碼,前端根據錯誤碼決定顯示錯誤提示還是登陸到指定頁面
$('#loginform').submit( function(){ var username = $('#email').val(); var password = $('#password').val(); if(!username){ $('.loginError').html('使用者名稱不符合規範').show(); return false; } if(!password){ $('.loginError').html('密碼不符合規範').show(); return false; } $.ajaxSetup({ data: {csrfmiddlewaretoken: '{{ csrf_token }}' }, }); $.ajax({ type:"POST", url: '/blog/loginVerify/', data: {username:username, password:password}, dataType:'json', cache:false, success: function(data) { if(data == 1 ){ location.href = '/blog/index'; } if(data == -1 || data == 0 ){ $('.loginError').html('使用者名稱不存在或者使用者名稱密碼不匹配').show(); } }, error: function() { $('.loginError').html('請求失敗,請重新整理頁面後重試').show(); } }); return false; });
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net