首先是讓Django項目與mysql數據庫初步建立連接
具體做法見:pycharm連接mysql(注意其中第二步MySQL驅動最好安裝最新版的)
這里講一下我在做這一步遇到的問題。一般Driver 那里的com.mysql.cj.jdbc.Driver是會自動顯示的,但我一開始不顯示
因為我的mysql-connector-java-8.0.19文件夾如下,重復了,(這個是我拿下載到的zip選擇解壓文件得到的),得選第二個mysql-connector-java-8.0.19才有效:
正確的mysql-connector-java-8.0.19包含如下文件,
ok,按以上步驟完成便可與mysql初步建立連接了。
連接建立后便可以在pycharm直接對數據庫進行操作了
這里的對DB navigator的操作自己隨便點點就可以懂了,無非就是增刪改查,不細說
接下來就是一些配置問題
在settings.py里做如下修改:
這里的name填寫你要連接的MySQL中的數據庫名字
在這里注冊以下app,my_app是我創建的app的名字
然后對init.py做如下修改:
在models.py中添加如下代碼,創建一個user模型:
然后在admin.py中注冊一下該模型:
這樣我們就在數據庫中創建了一個user表,如圖:
隨后通過connection在表中添加數據,這個自己摸索一下即可實現
這樣表中就有了兩個我們插入的數據:
最后一步,在終端執行如下命令:
python manage.py makemigrations
python manage.py migrate
這兩個命令的作用可以自行網上了解
到這里就剩最后一步了,即登錄頁面提交表單,隨后到數據庫中驗證
找到登錄頁面的表單:
其中action代表你將表單提交至何處(后面我們會詳寫check_login),用戶名和密碼輸入里的name,我們后面會根據這兩個name獲取兩個框中輸入的值(見下圖代碼,點擊登錄時提交表單,獲取到了id為login-username框中輸入的值,而userName恰好就是上圖里的name)
到urls.py中添加check_login:最后到views.py中詳細寫一下check_login.
先如下,暫時並未與數據庫相連接
def check_login(request): if request.method == "POST": username = request.POST.get('userName', None) #userName為上圖form表單中用戶名那里的name值 password = request.POST.get('passWord', None) if username =='admin' and password =='123456': return redirect('homepage') #跳轉至homepage頁面 else: return render(request, 'login.html')
在登錄頁面,用戶名輸入admin,密碼輸入123456
若可以跳轉至homepage頁面,則代表成功獲取到了框中輸入的用戶名和密碼
接下來就是連接數據庫了,代碼如下:
def check_login(request): if request.method == "POST": username = request.POST.get('userName', None) password = request.POST.get('passWord', None) #if username =='admin' and password =='123456':///此處試驗成功,成功從表單處得到輸入的用戶名和密碼 # return redirect('homepage') #else: # return render(request, 'register.html') if username and password: # 確保用戶名和密碼都不為空 username = username.strip() try: user = models.User.objects.get(name=username) #看前面創建的user表中是否有name值符合登錄頁面輸入的用戶名 except: return render(request, 'register.html') #數據庫中沒有相應的用戶名,跳轉至注冊頁面 if user.password == password: return redirect('homepage') return render(request, 'login.html')
ok,這樣就可以在Django中實現登錄功能啦
如果本片博客無法幫你用Django實現登錄/注冊,可以結合一下https://blog.csdn.net/laikaikai/article/details/80563387,這篇博客中的登錄注冊部分還是很詳細的。