天天看點

Python-Django+MySQL基礎案例-增删改查

【個人學習項目記錄】

技術棧:Django3.2.5+MySQL8.0.17

開發工具:PyCharm2020.1.2+Navicat Premium

建立項目

通過Pycharm->Django直接建立

Python-Django+MySQL基礎案例-增删改查

資料庫連接配接

連接配接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進行資料連接配接,如下圖所示(含項目結構目錄)

Python-Django+MySQL基礎案例-增删改查

注冊案例

在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>
           

效果展示

注冊案例成果

Python-Django+MySQL基礎案例-增删改查
Python-Django+MySQL基礎案例-增删改查
Python-Django+MySQL基礎案例-增删改查

其他案例成果

一個流程步驟類似,增改改查效果都已經實作了,暫時不貼代碼了,後續有空再補齊,貼幾張成果圖

Python-Django+MySQL基礎案例-增删改查