溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

發(fā)布時(shí)間:2023-10-23 16:21:42 來(lái)源:億速云 閱讀:158 作者:栢白 欄目:開(kāi)發(fā)技術(shù)

本篇文章和大家了解一下如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。

前言:

本文從0到1實(shí)現(xiàn)django搭建一個(gè)web頁(yè)面,實(shí)現(xiàn)了django連接mysql數(shù)據(jù)庫(kù),簡(jiǎn)單的get、post請(qǐng)求等

一、使用pyacharm創(chuàng)建一個(gè)django項(xiàng)目

略,專業(yè)版直接創(chuàng)建即可

這是初始化創(chuàng)建的第三方庫(kù)

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

二、啟動(dòng)django項(xiàng)目驗(yàn)證

pycharm的terminal輸入

python manage.py runserver

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 訪問(wèn):

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 小插曲:在啟動(dòng)的時(shí)候報(bào)錯(cuò):‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)]
NameError: name ‘os’ is not defined

我的解決方法是:在settings.py文件頭部  import os

網(wǎng)絡(luò)上還有其他方法(博主沒(méi)有去試):修改默認(rèn)生成的“‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)]”,修改如下:
‘DIRS’: [Path(BASE_DIR, ‘templates’)]

三、配置mysql數(shù)據(jù)庫(kù)

1、本地安裝mysql數(shù)據(jù)庫(kù)

1)安裝mysql數(shù)據(jù)庫(kù)

我使用的是5.7.22(我的版本),安裝略

2)自己創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)

創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)名稱:   smalldjangodb

2、安裝 pymysql

pip install pymysql

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

3、配置mysql數(shù)據(jù)庫(kù)

1)在項(xiàng)目同名包下的_init_.py里面添加

import pymysql
pymysql.install_as_MySQLdb()

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 2)在settings.py文件中,把DATABASES中的內(nèi)容換掉

 先注釋掉默認(rèn)的數(shù)據(jù)庫(kù)配置下圖部分

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 將下面部分復(fù)制進(jìn)去,然后進(jìn)行修改

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',#數(shù)據(jù)庫(kù)的類型
'NAME': '', #所使用的的數(shù)據(jù)庫(kù)的名字
'USER': 'root', #數(shù)據(jù)庫(kù)服務(wù)器的用戶
'PASSWORD': '', #密碼
'HOST': '127.0.0.1', #主機(jī)
'PORT': '3306', #端口
}
}

4、django默認(rèn)數(shù)據(jù)遷移

 1)執(zhí)行遷移,將項(xiàng)目中原有的應(yīng)用的模型同步遷移到數(shù)據(jù)庫(kù)

pycharm的terminal輸入

python manage.py migrate

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 2)查看數(shù)據(jù)遷移結(jié)果

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

5、創(chuàng)建一個(gè)后臺(tái)超級(jí)管理員 

pycharm的terminal輸入

python manage.py createsuperuser

 用戶名、郵箱(隨便輸,格式正確接口)、密碼

這里注冊(cè)的是super 密碼qq+名字簡(jiǎn)寫(給自己一個(gè)記錄)

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 四、登錄后臺(tái)系統(tǒng)

1、啟動(dòng)服務(wù)

python manage.py runserver

2、登錄后臺(tái)系統(tǒng)

使用上一步創(chuàng)建的超管賬戶登錄系統(tǒng) 

http://127.0.0.1:8000/admin

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 登錄成功頁(yè)面:

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

五、創(chuàng)建app應(yīng)用

1、命令創(chuàng)建應(yīng)用

pycharm的terminal輸入

python manage.py startapp lucky

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

2、在settings中的INSTALLED_APPS中配置應(yīng)用

將應(yīng)用lucky加到配置settings中的INSTALLED_APPS

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

六、配置應(yīng)用路由 

1、配置主路由

 在應(yīng)用文件夾lucky下面創(chuàng)建一個(gè)子路由文件urls.py

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 改成如下圖:

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 多個(gè)應(yīng)用的話,配置多個(gè)主路由

2、配置子應(yīng)用路由

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 輸入(這里views.toLoginView指的是lucky應(yīng)用下views里面的方法toLoginView,下一步會(huì)說(shuō)明):

from django.urls import path
from . import views
 
urlpatterns = [
    path('', views.toLoginView, name='toLoginView'),
]

3、配置views

打開(kāi)應(yīng)用lucky目錄下的views

from django.shortcuts import render
 
# Create your views here.
 
 
def toLoginView(request):
    return render(request, 'login.html')

七、創(chuàng)建html頁(yè)面

1、確定模版配置是否正確

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

2、創(chuàng)建一個(gè)示例html頁(yè)面 

在templates下創(chuàng)建一個(gè)login.html

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

八、訪問(wèn)

啟動(dòng)服務(wù)訪問(wèn)地址:http://127.0.0.1:8000/lucky/

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

開(kāi)啟:settings.py開(kāi)啟debug模式
DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

九、優(yōu)化實(shí)現(xiàn)簡(jiǎn)單的get與post

1、配置路由

from django.urls import path
from . import views
urlpatterns = [
    path('', views.toLoginView),
    path('index/', views.loginView),
]

2、使用get方式實(shí)現(xiàn)

1)配置views頁(yè)面

from django.http import HttpResponse
from django.shortcuts import render
 
# Create your views here.
 
 
def toLoginView(request):
    return render(request, 'login.html')
 
def loginView(request):
    username = request.GET.get('user', '') # 后面的''表示獲取不到user就賦值空
    password = request.GET.get('pwd', '')
    if username and password:
        return HttpResponse("登錄成功")
    else:
        return HttpResponse("登錄失敗")

2)優(yōu)化登錄頁(yè)面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登錄</title>
</head>
<body>
 
<form action="/lucky/index/" method="get">
    <p><label>用戶名:</label><input name="user" /></p>
    <p><label>密碼:</label><input name="pwd" /></p>
    <input type="submit" value="登錄">
 
</form>
 
 
</body>
</html>

3)展示成果

啟動(dòng)服務(wù) http://127.0.0.1:8000/lucky/

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 登錄成功

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 get請(qǐng)求的缺點(diǎn)是賬戶密碼暴露在URL,所有下面講解post方式

3、使用post方式實(shí)現(xiàn)

1)配置views頁(yè)面

from django.http import HttpResponse
from django.shortcuts import render
 
# Create your views here.
 
 
def toLoginView(request):
    return render(request, 'login.html')
 
def loginView(request):
    username = request.POST.get('user', '') # 后面的''表示獲取不到user就賦值空
    password = request.POST.get('pwd', '')
    # if username=='admin' and password=='1':
    if username and password:
        return HttpResponse("登錄成功")
    else:
        return HttpResponse("登錄失敗")

2)優(yōu)化登錄頁(yè)面

將上面的get修改為post即可

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登錄</title>
</head>
<body>
<form action="/lucky/index/" method="post">
    <p><label>用戶名:</label><input name="user" /></p>
    <p><label>密碼:</label><input name="pwd" /></p>
    <input type="submit" value="登錄">
</form>
</body>
</html>

 3)展示成果

啟動(dòng)服務(wù) http://127.0.0.1:8000/lucky/

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

十、繼續(xù)優(yōu)化,使用數(shù)據(jù)庫(kù)方式進(jìn)行數(shù)據(jù)判斷

1、在model.py當(dāng)中添加數(shù)據(jù)模型

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

from django.db import models
 
# Create your models here.
 
class UserInfo(models.Model):
    id = models.CharField(primary_key=True,max_length=20)
    name = models.CharField(max_length=20)
    password = models.CharField(max_length=20)

2、將數(shù)據(jù)模型遷移到數(shù)據(jù)庫(kù)

注意mysql此時(shí)要能支持訪問(wèn)

python manage.py makemigrations lucky

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 將數(shù)據(jù)遷移到mysql數(shù)據(jù)庫(kù)

python manage.py migrate

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 到數(shù)據(jù)庫(kù)驗(yàn)證:

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

3、創(chuàng)建數(shù)據(jù)進(jìn)行后續(xù)操作

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

4、修改views.py

from django.http import HttpResponse
from django.shortcuts import render
from .models import *
 
# Create your views here.
 
 
def toLoginView(request):
    return render(request, 'login.html')
 
def loginView(request):
    user_name = request.POST.get('user', '') # 后面的''表示獲取不到user就賦值空
    pass_word = request.POST.get('pwd', '')
    # if user_name=='admin' and pass_word=='1':
    if user_name and pass_word:
        exit_user =UserInfo.objects.filter(name= user_name,password = pass_word).count()
        if exit_user >= 1:
            return HttpResponse("登錄成功!")
        else:
            return HttpResponse("帳號(hào)密碼錯(cuò)誤!")
    else:
        return HttpResponse("請(qǐng)輸入正確用戶名和密碼!")

5、驗(yàn)證

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

十一、實(shí)現(xiàn)注冊(cè)

1、注冊(cè)頁(yè)面

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

在templates下創(chuàng)建register.html 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注冊(cè)</title>
</head>
<body>
<form action="/lucky/register/" method="post">
    {% csrf_token %}
    <p><label>用戶名:</label><input name="user" /></p>
    <p><label>密碼:</label><input name="pwd" /></p>
    <input type="submit" value="注冊(cè)">
</form>
</body>
</html>

2、配置路由

from django.urls import path
from . import views
urlpatterns = [
    path('', views.toLoginView),
    path('index/', views.loginView),
    path('toregister/', views.toRegisterView),
    path('register/', views.registerView),
]

3、創(chuàng)建注冊(cè)方法

到views.py文件當(dāng)中創(chuàng)建registerView方法和toRegisterView方法

from django.http import HttpResponse
from django.shortcuts import render
from .models import *
 
# Create your views here.
 
 
def toLoginView(request):
    return render(request, 'login.html')
 
def loginView(request):
    user_name = request.POST.get('user', '') # 后面的''表示獲取不到user就賦值空
    pass_word = request.POST.get('pwd', '')
    # if user_name=='admin' and pass_word=='1':
    if user_name and pass_word:
        exit_user = UserInfo.objects.filter(name=user_name, password=pass_word).count()
        if exit_user >= 1:
            return HttpResponse("登錄成功!")
        else:
            return HttpResponse("帳號(hào)密碼錯(cuò)誤!")
    else:
        return HttpResponse("請(qǐng)輸入正確用戶名和密碼!")
 
# 渲染注冊(cè)頁(yè)面
def toRegisterView(request):
    return render(request, 'register.html')
 
# 注冊(cè)的邏輯判斷
def registerView(request):
    user_name = request.POST.get('user', '')
    pass_word = request.POST.get('pwd', '')
    if user_name and pass_word:
        register_user = UserInfo(name=user_name, password=pass_word)
        register_user.save()
        return HttpResponse("注冊(cè)成功!")
    else:
        return HttpResponse("請(qǐng)輸入完整的用戶名和密碼!")

4、訪問(wèn)驗(yàn)證

注意訪問(wèn)路徑要加應(yīng)用名字,這個(gè)路由配置有關(guān)

訪問(wèn) http://127.0.0.1:8000/lucky/toregister/

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 注冊(cè)成功

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

 數(shù)據(jù)庫(kù)驗(yàn)證

如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面

這個(gè)是注冊(cè)加了一個(gè)重復(fù)的判斷

# 注冊(cè)的邏輯判斷
def registerView(request):
    user_name = request.POST.get('user', '')
    pass_word = request.POST.get('pwd', '')
    if user_name and pass_word:
        exit_user = UserInfo.objects.filter(name=user_name).count()        
        if exit_user:
            return HttpResponse("對(duì)不起,當(dāng)前賬戶已存在!請(qǐng)換一個(gè)id注冊(cè)")
        else:
            register_user = UserInfo(name=user_name, password=pass_word)
            register_user.save()
            return HttpResponse("注冊(cè)成功!")
    else:
        return HttpResponse("請(qǐng)輸入完整的用戶名和密碼!")

十二、數(shù)據(jù)庫(kù)表反映射到django的models

這個(gè)會(huì)將數(shù)據(jù)庫(kù)當(dāng)中的全部表都映射過(guò)來(lái)

# lucky 是django的應(yīng)用名
python manage.py inspectdb>lucky/models.py

以上就是如何利用django和mysql實(shí)現(xiàn)一個(gè)簡(jiǎn)單的web登錄頁(yè)面的簡(jiǎn)略介紹,當(dāng)然詳細(xì)使用上面的不同還得要大家自己使用過(guò)才領(lǐng)會(huì)。如果想了解更多,歡迎關(guān)注億速云行業(yè)資訊頻道哦!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI