【个人学习项目记录】
技术栈: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>
效果展示
注册案例成果
其他案例成果
一个流程步骤类似,增改改查效果都已经实现了,暂时不贴代码了,后续有空再补齐,贴几张成果图