天天看点

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基础案例-增删改查