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

【个人学习项目记录】
技术栈: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>

效果展示

注册案例成果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

其他案例成果

一个流程步骤类似,增改改查效果都已经实现了,暂时不贴代码了,后续有空再补齐,贴几张成果图

在这里插入图片描述

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基于Python+Django+MySQL实现的Web数据库系统的示例代码: 1. 首先,需要安装DjangoMySQL依赖库。可以通过以下命令进行安装: ``` pip install Django pip install mysqlclient ``` 2. 创建Django项目和应用,可以通过以下命令进行创建: ``` django-admin startproject myproject cd myproject python manage.py startapp myapp ``` 3. 在Django项目的settings.py中,配置MySQL数据库连接信息: ``` DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } } ``` 4. 在Django应用的models.py中,定义数据库模型: ``` from django.db import models class User(models.Model): name = models.CharField(max_length=50) email = models.EmailField() age = models.IntegerField() def __str__(self): return self.name ``` 5. 进行数据库迁移,创建User表: ``` python manage.py makemigrations python manage.py migrate ``` 6. 在Django应用的views.py中,编写增删改查的视图函数: ``` from django.shortcuts import render, get_object_or_404, redirect from .models import User from .forms import UserForm def user_list(request): users = User.objects.all() return render(request, 'user_list.html', {'users': users}) def user_detail(request, pk): user = get_object_or_404(User, pk=pk) return render(request, 'user_detail.html', {'user': user}) def user_new(request): if request.method == "POST": form = UserForm(request.POST) if form.is_valid(): user = form.save(commit=False) user.save() return redirect('user_detail', pk=user.pk) else: form = UserForm() return render(request, 'user_edit.html', {'form': form}) def user_edit(request, pk): user = get_object_or_404(User, pk=pk) if request.method == "POST": form = UserForm(request.POST, instance=user) if form.is_valid(): user = form.save(commit=False) user.save() return redirect('user_detail', pk=user.pk) else: form = UserForm(instance=user) return render(request, 'user_edit.html', {'form': form}) def user_delete(request, pk): user = get_object_or_404(User, pk=pk) user.delete() return redirect('user_list') ``` 7. 在Django应用的urls.py中,配置URL路由: ``` from django.urls import path from . import views urlpatterns = [ path('', views.user_list, name='user_list'), path('user/<int:pk>/', views.user_detail, name='user_detail'), path('user/new/', views.user_new, name='user_new'), path('user/<int:pk>/edit/', views.user_edit, name='user_edit'), path('user/<int:pk>/delete/', views.user_delete, name='user_delete'), ] ``` 8. 在Django应用的templates目录下,编写HTML模板文件: user_list.html: ``` {% extends "base.html" %} {% block content %} <h1>Users</h1> <table> <tr> <th>Name</th> <th>Email</th> <th>Age</th> <th>Actions</th> </tr> {% for user in users %} <tr> <td>{{ user.name }}</td> <td>{{ user.email }}</td> <td>{{ user.age }}</td> <td> <a href="{% url 'user_detail' pk=user.pk %}">View</a> <a href="{% url 'user_edit' pk=user.pk %}">Edit</a> <a href="{% url 'user_delete' pk=user.pk %}">Delete</a> </td> </tr> {% endfor %} </table> <a href="{% url 'user_new' %}">Add User</a> {% endblock %} ``` user_detail.html: ``` {% extends "base.html" %} {% block content %} <h1>{{ user.name }}</h1> <p>Email: {{ user.email }}</p> <p>Age: {{ user.age }}</p> <a href="{% url 'user_edit' pk=user.pk %}">Edit</a> <a href="{% url 'user_delete' pk=user.pk %}">Delete</a> {% endblock %} ``` user_edit.html: ``` {% extends "base.html" %} {% block content %} <h1>{{ title }}</h1> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Save</button> </form> {% endblock %} ``` base.html: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{% block title %}{% endblock %}</title> </head> <body> <div> <h1><a href="{% url 'user_list' %}">My Project</a></h1> </div> <div> {% block content %}{% endblock %} </div> </body> </html> ``` 9. 在Django应用的forms.py中,定义表单类: ``` from django import forms from .models import User class UserForm(forms.ModelForm): class Meta: model = User fields = ('name', 'email', 'age',) ``` 10. 运行Django开发服务器,查看效果: ``` python manage.py runserver ``` 以上就是一个基于Python+Django+MySQL实现的Web数据库系统的示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值