前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ORM学员管理系统单表查询示例

ORM学员管理系统单表查询示例

作者头像
全栈程序员站长
发布2022-07-21 11:07:54
2410
发布2022-07-21 11:07:54
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

前期准备工作

首先创建好一个项目

<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
一:必须使用MySQL创建一个库

因为ORM只能对表和数据进行处理,所以库必须自己创建

代码语言:javascript
复制
create  database  mysite;
二:进行相关的配置
代码语言:javascript
复制
在项目mysite的settings.py文件中进行

一:

<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例

二:

<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例

三:

<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例

四:

<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例

五:

三 创建表

必须注意一下俩点:

代码语言:javascript
复制
在app/models.py文件中创建一个类,对应的是数据库中的库,类名就是库名
代码语言:javascript
复制
创建的这个类必须继承models.Model
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
四:链接数据库
代码语言:javascript
复制
在项目的__init__.py文件中导入pymysql
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
<span role="heading" aria-level="2">ORM学员管理系统单表查询示例
五:执行相关命令
代码语言:javascript
复制
在PyCharm中点击最下边的Terminal执行下面的俩条命令:

1:python manage.py makemigrations   记录

2:python manage.py migrate  翻译 

正式编写程序

表结构
代码语言:javascript
复制
class Class(models.Model):
    id = models.AutoField(primary_key=True)  # 主键
    cname = models.CharField(max_length=32)  # 班级名称
    first_day = models.DateField()  # 开班时间
查询班级

URL部分:

代码语言:javascript
复制
url(r'^class_list/$', views.class_list, name="class_list"),

视图部分:

代码语言:javascript
复制
def class_list(request):
    class_list = models.Class.objects.all()
    return render(request, "class_list.html", {"class_list": class_list})

HTML部分:

代码语言:javascript
复制
<table border="1">
  {% for class in class_list %}
    <tr>
    <td>{{ forloop.counter }}</td>
    <td>{{ class.id }}</td>
    <td>{{ class.cname }}</td>
    <td>{{ class.first_day|date:'Y-m-d' }}</td>
    </tr>
  {% endfor %}
</table>
新增班级

URL部分:

代码语言:javascript
复制
url(r'^add_class/$', views.add_class, name="add_class"),

视图部分:

代码语言:javascript
复制
def add_class(request):
    # 前端POST填好的新班级信息
    if request.method == "POST":
        cname = request.POST.get("cname")
        first_day = request.POST.get("first_day")
        # 还可以这么获取提交的数据,但不推荐这么写
        # data = request.POST.dict()
        # del data["csrfmiddlewaretoken"]
        # 创建新数据的两种方式
        # new_class = models.Class(cname=cname, first_day=first_day)
        # new_class.save()
        models.Class.objects.create(cname=cname, first_day=first_day)
        # 跳转到class_list
        return redirect(reverse('class_list'))
    # 返回添加班级的页面
    return render(request, "add_class.html")

HTML部分:

在班级列表页面添加一个a标签:

代码语言:javascript
复制
<a href="{% url 'add_class' %}">新页面添加</a>

新添加页面:

注意 {% csrf_token %} 和 date类型的input标签。

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>添加班级</title>
</head>
<body>
<form action="{% url 'add_class' %}" method="post">
  {% csrf_token %}
  <p>班级名称:<input type="text" name="cname"></p>
  <p>开班日期:<input type="date" name="first_day"></p>
  <p>提交<input type="submit"></p>
</form>
</body>
</html>
删除班级

URL部分:

代码语言:javascript
复制
url(r'^delete_class/$', views.delete_class, name="delete_class"),

视图部分:

代码语言:javascript
复制
def delete_class(request):
    class_id = request.GET.get("class_id")
    models.Class.objects.filter(id=class_id).delete()
    return redirect(reverse("class_list"))

HTML部分:

在班级列表页面的表格中添加删除。

代码语言:javascript
复制
<a href="{% url 'delete_class' %}?class_id={{ class.id }}">删除</a>
编辑班级

URL部分:

代码语言:javascript
复制
url(r'^edit_class/$', views.edit_class, name="edit_class"),

视图部分:

代码语言:javascript
复制
def edit_class(request):
    if request.method == "POST":
        class_id = request.POST.get("id")
        cname = request.POST.get("cname")
        first_day = request.POST.get("first_day")
        models.Class.objects.create(id=class_id, cname=cname, first_day=first_day)
        return redirect(reverse("class_list"))
    class_id = request.GET.get("class_id")
    class_obj = models.Class.objects.filter(id=class_id)
    if class_obj:
        class_obj = class_obj[0]
        return render(request, "edit_class.html", {"class": class_obj})
    # 找不到该条记录
    else:
        return redirect(reverse("class_list"))

HTML部分:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>编辑班级</title>
</head>
<body>
<form action="{% url 'edit_class' %}" method="post">
  {% csrf_token %}
  <input type="text" value="{{ class.id }}" style="display: none">
  <p>班级名称:<input type="text" name="cname" value="{{ class.cname }}"></p>
  <p>开班日期:<input type="date" name="first_day" value="{{ class.first_day|date:'Y-m-d' }}"></p>
  <p>提交<input type="submit"></p>
</form>
</body>
</html>

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/124474.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年3月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前期准备工作
    • 一:必须使用MySQL创建一个库
      • 二:进行相关的配置
        • 三 创建表
          • 四:链接数据库
            • 五:执行相关命令
            • 正式编写程序
              • 表结构
                • 查询班级
                  • 新增班级
                    • 删除班级
                      • 编辑班级
                      相关产品与服务
                      云数据库 MySQL
                      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档