1. 程式人生 > 實用技巧 >kakfa2安裝指北

kakfa2安裝指北

看了好多登入註冊和登出的教程,很亂,很迷,然後總結了一下,簡單的做了一個登入,註冊和登出的頁面。

1,首先,使用pycharm建立一個專案

單擊File —> 選中Django —> 在右側Location選中所需的路徑,或直接在框裡命名

2,現在,你有了一個Django專案

你需要單擊左下方的Terminal

建立一個app,命令:pythonmanage.py startapp Myapp(命名不做要求)

建立一個存放靜態檔案的資料夾:static(預設為該命名)

專案如下:

3,在Waste下:

settings.py:

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  # 啟用app
  'Myapp'
]
 
# 更改資料庫連線
DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'HOST' : 'localhost',
    'PORT' : 3306,
    'NAME' : 'mysql',
    'USER': 'root',
    'PASSWORD' : '123456'
  }
}
# 漢語與時區
 
LANGUAGE_CODE = 'zh-hans'
 
TIME_ZONE = 'Asia/Shanghai'
 
# 靜態資料夾路徑
STATIC_URL = '/static/'
 
STATICFILES_DIRS = [
  os.path.join(BASE_DIR,'static'),
]

在urls.py下:

from django.contrib import admin
from django.urls import path,include
 
urlpatterns = [
  path('admin/', admin.site.urls),
  #更改url匹配,定向到myApp的urls中,當主機地址後面引數時,到myApp中找連結
  path('',include('Myapp.urls'))
]

關閉這倆檔案,因為我們基本用不到了。

4,在Myapp下:

新建urls.py,專案如下:

__init__.py:設定資料庫連線

import pymysql
pymysql.install_as_MySQLdb()

urls.py:

from django.urls import path
from . import views
 
urlpatterns = [
  #主頁,用來顯示類別等其他資料
  path('',views.index),
  # 登入
  path('tologin/',views.tologin),
  # 註冊
  path('register/',views.register),
  # 登出
  path('lagout/',views.lagout),
]

views.py:

from django.shortcuts import render, redirect
from django.http import HttpResponseRedirect
from django.contrib.auth.models import User
from django.contrib.auth import authenticate,login,logout
from django.contrib.auth.models import AnonymousUser
 
# Create your views here.
# 主頁
def index(request,):
  username = request.user
  return render(request,'Myapp/index.html',locals())
 
# 登入
def tologin(request):
  if request.method == 'POST' and request.POST:
    data = request.POST
    username = data.get('username')
    password = data.get('password')
    n = authenticate(username=username,password=password)
    if n:
      # 登陸成功即可獲取當前登入使用者,返回主頁
      login(request,user=n)
      return redirect('/')
  # 失敗重定向到登入頁
  return render(request, 'myApp/login.html')
 
# 註冊
def register(request):
  if request.method == 'POST' and request.POST:
    data = request.POST
    username = data.get("username")
    password = data.get("password")
    # 校驗註冊,名字不可重複
    u = User.objects.filter(username=username).first()
    if u:
      info = '該使用者名稱已被註冊'
      return render(request,'Myapp/ERROR.html',{'info':info})
    else:
      # 註冊成功,建立使用者
      User.objects.create_user(
        username=username,
        password=password
      )
      # 重定向到登入頁面
      return HttpResponseRedirect('/tologin/')
  # 註冊失敗,重新註冊
  return render(request,'Myapp/register.html')
 
def lagout(request):
  logout(request)
  return redirect('/')

因為用的是auth元件,所以這個模型可以不寫

5,回到Terminal

執行生成遷移檔案:python manager.py makemigrations

生成遷移:python manager.py migrate

6,簡陋的html

ERROR.html:用來提示錯誤,任何頁面的錯誤,向該頁面傳入錯誤資訊info即可

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>ERROR</title>
</head>
<body>
{{ info }}
</body>
</html>


index.html:主頁,歡迎使用者,無使用者顯示為遊客,為什麼是遊客,不是AnonymousUser,後面講

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>主頁</title>
</head>
<body>
 
  你好,{{ username }}
  <a href="{{ " rel="external nofollow" rel="external nofollow" rel="external nofollow" lagout/" }}">登出</a>
  <a href="{{ " rel="external nofollow" rel="external nofollow" rel="external nofollow" tologin/" }}">登入</a>
  <a href="{{ " rel="external nofollow" rel="external nofollow" rel="external nofollow" register/" }}">註冊</a>
 
</body>
</html>

login.html :登入,簡陋,emmm

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>登入</title>
</head>
<body>
<form method="post">
    {% csrf_token %}
    <p>
      使用者名稱:<input type="text" name="username" >
    </p>
    <p>
      密  碼:<input type="password" name="password" >
    </p>
    <p>
      <input type="submit" value="登入">
      &nbsp;
      <input type="reset" value="取消">
    </p>
  </form>
</body>
</html>

register:註冊:簡陋,too

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>註冊</title>
</head>
<body>
<form method="post">
    {% csrf_token %}
    <p>
      使用者名稱:<input type="text" name="username" >
    </p>
    <p>
      密  碼:<input type="password" name="password" >
    </p>
    <p>
      <input type="submit" value="註冊">
      &nbsp;
      <input type="reset" value="取消">
    </p>
  </form>
</body>
</html>

然後,一般,我們用auth元件,如果沒有登入,它會這樣顯示:

但是,它很突兀,很難受,為什麼是英語?什麼意思?對不對,就想改。那就改唄

在我的views.py裡的最後一個import是無用引用,ctrl加滑鼠右鍵點選AnonymousUser,檢視AnonymousUser原始碼:

改成:

即可:

7,測試:

執行命令:python manager.py runserver,不是點選三角形哦。

註冊成功跳轉登入

跳轉登入,登入後轉首頁,且歡迎當前使用者

登出,成功登出後回首頁,且歡迎遊客

最後,註冊已有使用者名稱報錯

總結

以上所述是小編給大家介紹的Django實現auth模組下的登入註冊與登出功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對碼農教程網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!