【個人學習項目記錄】
技術棧:Django3.2.5+MySQL8.0.17
開發工具:PyCharm2020.1.2+Navicat Premium
建立項目
通過Pycharm->Django直接建立

資料庫連接配接
連接配接MySQL資料庫,因為Django預設使用SQLite資料庫,是以需要改動代碼
先在終端輸入pip install PyMySQL,下載下傳相關依賴架構
然後在PystudyWeb->settings.py中找到DATABASES = { }替換成MySQL的連接配接語句
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #資料庫類型
'NAME': 'django', #所使用的資料庫名字
'USER':'root', #資料庫賬号
'PASSWORD':'root', #資料庫密碼
'HOST':'127.0.0.1', #主機
'PORT':'3306', #端口
}
}
然後終端輸入以下兩句語句進行資料庫遷移
python manage.py makemigrations
python manage.py migrate
遷移完成後可以通過PyCharm裡的Database進行資料連接配接,如下圖所示(含項目結構目錄)
注冊案例
在learnTest->models.py添加如下語句,再重複上述資料庫遷移步驟(如果遷移可删除之前遷移的表重新遷移),此處操作即ORM管理。然後會自動生成表learntest_user
# 建立一個資料庫user表模型
class User(models.Model):
# 如果沒有的話,預設會生成一個名稱為 id 的列,如果要顯示的自定義一個自增列
id = models.AutoField(primary_key=True)
# 類裡面的字段代表資料表中的字段(username),資料類型則由CharField(相當于varchar)
username = models.CharField(max_length=100)
# 密碼
password = models.CharField(max_length=100)
在PystudyWeb->urls.py編寫跳轉路徑
urlpatterns = [
path('admin/', admin.site.urls),
path('toLoginReg/', views.to_LoginRegView),
path('Login/', views.LoginView),
]
在learnTest->views.py編寫資料互動和控制語句,代碼如下
def to_LoginRegView(request):
return render(request, 'login_Register.html')
def RegisterView(request):
usm = request.POST.get('zh', '')
pwd = request.POST.get('mm', '')
if User.objects.filter(username = usm):
messages.error(request, '賬号已存在')
return HttpResponseRedirect('/toLoginReg/')
# return HttpResponse("賬号已存在")
else:
if usm and pwd:
str = User(username = usm, password = pwd)
str.save()
messages.error(request, '注冊成功')
return HttpResponseRedirect('/toLoginReg/')
# return HttpResponse("注冊成功")
else:
messages.error(request, '注冊失敗')
return HttpResponseRedirect('/toLoginReg/')
# return HttpResponse("注冊失敗")
引入了bootstrap架構,是以需要建立檔案夾static->css/js/images,然後在PystudyWeb->settings.py修改部分代碼讓static檔案夾被識别到
STATIC_URL = '/static/'
# 手動添加,不然靜态資源顯示不出來
# 意為與templates為同級檔案夾
STATICFILES_DIRS=[
os.path.join(BASE_DIR,'static').replace('\\','/')
]
在tamplates建立login_Register.html,代碼如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login_Register</title>
<script src="/static/js/bootstrap.js"></script>
<link rel="stylesheet" href="/static/css/bootstrap.css">
</head>
<body>
<!-- 登入注冊二合一表單 -->
<form style="text-align: center; margin-top: 50px" method="post" name="myForm">
{# <form>标簽下加,避免403 #}
{% csrf_token %}
<div class="form-group">
<input type="text" placeholder="賬号" class="form-control" name="zh" style="display:inline;width:200px;"autocomplete="off" />
</div>
<div class="form-group">
<input type="text" placeholder="密碼" class="form-control" name="mm" style="display:inline;width:200px;"autocomplete="off" />
</div>
<div style="text-align: center">
<input type="submit" class="btn btn-primary" value="登入" onclick="document.myForm.action = '/Login/'"/>
<input type="submit" class="btn btn-primary" value="注冊" onclick="document.myForm.action = '/Register/'"/>
</div>
</form>
</body>
{% if messages %}
<script>
{% for msg in messages %}
alert('{{ msg.message }}');
{% endfor %}
</script>
{% endif %}
</html>
效果展示
注冊案例成果
其他案例成果
一個流程步驟類似,增改改查效果都已經實作了,暫時不貼代碼了,後續有空再補齊,貼幾張成果圖