測試平臺開發(三)後端實現註冊登入功能
阿新 • • 發佈:2020-07-15
一、建立使用者模組的應用
Django官網寫的是使用命令列執行python manage.py startapp [ApplicationName] 來建立應用,但使用工具會更方便而且還有智慧提示。
startapp users # startapp:建立應用的關鍵字,users:為應用的名字
生成應用後一定要記得將應用名加入到settings.py檔案里名為INSTALLED_APPS的列表中,遵循規範加入到列表的最後,再新增應用也一樣
# settings.py INSTALLED_APPS=[
'users', ]
應用目錄詳解
users ├── migrations # 存放遷移資料錶的歷史檔案,內容自動生成 │ └── __init__.py # 一個空檔案,告訴 Python 該目錄是一個 Python 包。 ├── __init__.py # 一個空檔案,告訴 Python 該目錄是一個 Python 包。 ├── admin.py # 該應用的後臺管理系統配置,這裡用不到 ├── apps.py # 該應用的一些配置,這裡用不到 ├── models.py # 資料模組,用來定義資料表結構 ├── tests.py # Django提供的自動化測試功能,這裡用不到 └── views.py # 檢視模組,程式碼邏輯處理的主要地點,專案中大部分程式碼均在這裡編寫
二、連線MySQL資料庫
首先安裝Django連線MySQL的依賴包
pip install mysqlclient
進入settings.py中,找到下面這段程式碼
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
將其改為自己MySQL的資訊
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 指定MySQL引擎 'NAME': 'mydata', # 資料庫名稱 'USER':'root', # 使用者名稱 'PASSWORD':'123456', # 密碼 'HOST':'localhost', # 資料庫伺服器IP 'PORT':'3306', # 埠 } }
三、編寫使用者模組的資料模型
# users/model.py from django.db import models class Users(models.Model): id = models.AutoField(primary_key=True) # 主鍵id自增 username = models.CharField(max_length=32, null=False, blank=False, unique=True) # 使用者名稱 password = models.CharField(max_length=32, null=False, blank=False) # 密碼 email = models.CharField(max_length=32, null=False, blank=False, unique=True) # 郵箱 create_time = models.DateTimeField(auto_now_add=True) # 建立時間 class Meta: # 指定使用者表名稱 db_table = 'tp_users'
遷移資料庫,開啟 Tools > Run manage.py Task…,依次執行
makemigrations migrate
四、編寫檢視函式
# users/views.py from django.http import JsonResponse, HttpResponse from users.models import Users from django import views class UserLoginView(views.View): def post(self, request): json_data = request.body.decode('utf-8') python_data = eval(json_data) username = python_data.get('username') password = python_data.get('password') data = Users.objects.filter(username=username, password=password).first() if data: dict = {"id": data.id, "username": data.username} return JsonResponse(dict, status=200) return JsonResponse({"data": "無效使用者名稱或密碼"}, status=400) class UserRegisterView(views.View): def post(self, request): json_data = request.body.decode('utf-8') python_data = eval(json_data) if python_data.get("username") and python_data.get("password") and python_data.get("email"): try: new_user = Users.objects.create(**python_data) dict = {"id": new_user.id, "username": new_user.username} return JsonResponse(dict, status=201) except Exception as e: return JsonResponse({"data_error": str(e)}, status=400) return JsonResponse({"data": "所有欄位為必填項"}, status=400)
五、編寫使用者模組應用的路由
在users目錄下建立urls.py檔案,便於管理該應用下的路由
# users/urls.py from django.urls import path from users import views urlpatterns = [ path('login/', views.UserLoginView.as_view()), path('register/', views.UserRegisterView.as_view()) ]
六、定義全域性路由
前端傳送請求的介面會先訪問全域性路由再訪問應用下的路由
# testplatform/urls.py from django.contrib import admin from django.urls import path from django.conf.urls import include urlpatterns = [ path('admin/', admin.site.urls), path('user/', include("users.urls")), ]
七、測試
1.請求註冊介面
2.請求登入介面
八、總結
轉載請註明出處,商用請徵得作者本人同意,謝謝!!!