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

前期准备工作首先创建好一个项目一:必须使用MySQL创建一个库因为ORM只能对表和数据进行处理,所以库必须自己创建二:进行相关的配置一:二:三:四:五:三创建表必须注意一下俩点

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

前期准备工作

首先创建好一个项目

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

一:必须使用MySQL创建一个库

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

create  database  mysite;

二:进行相关的配置

在项目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学员管理系统单表查询示例

五:

三 创建表

必须注意一下俩点:

在app/models.py文件中创建一个类,对应的是数据库中的库,类名就是库名
创建的这个类必须继承models.Model

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

四:链接数据库

在项目的__init__.py文件中导入pymysql

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

五:执行相关命令

在PyCharm中点击最下边的Terminal执行下面的俩条命令:

1:python manage.py makemigrations   记录

2:python manage.py migrate  翻译 

正式编写程序

表结构

class Class(models.Model):
    id = models.AutoField(primary_key=True)  # 主键
    cname = models.CharField(max_length=32)  # 班级名称
    first_day = models.DateField()  # 开班时间

查询班级

URL部分:

url(r'^class_list/$', views.class_list, name="class_list"),

视图部分:

def class_list(request):
    class_list = models.Class.objects.all()
    return render(request, "class_list.html", {"class_list": class_list})

HTML部分:

<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部分:

url(r'^add_class/$', views.add_class, name="add_class"),

视图部分:

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标签:

<a href="{% url 'add_class' %}">新页面添加</a>

新添加页面:

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

<!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部分:

url(r'^delete_class/$', views.delete_class, name="delete_class"),

视图部分:

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部分:

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

<a href="{% url 'delete_class' %}?class_id={{ class.id }}">删除</a>

编辑班级

URL部分:

url(r'^edit_class/$', views.edit_class, name="edit_class"),

视图部分:

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部分:

<!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.net/124474.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月29日 下午6:35
下一篇 2022年3月29日 下午6:35


相关推荐

  • pycharm虚拟环境与本地环境区别_pycharm自带python吗

    pycharm虚拟环境与本地环境区别_pycharm自带python吗    Python的版本众多,在加上适用不同版本的PythonPackage。这导致在同时进行几个项目时,对库的依赖存在很大的问题。这个时候就牵涉到对Python以及依赖库的版本管理,方便进行开发,virtualenv就是用来解决这个问题的。下面介绍使用PyCharm创建VirtualEnvironment的方法。    PyCharm可以使用virtualenv中的功能来创建虚拟环境。Py…

    2022年8月27日
    8
  • jQuery中delegate和on的用法与区别详细解析

    jQuery中delegate和on的用法与区别详细解析在 jQuery1 7 中 delegate 已被 on 取代 对于早期版本 它仍然使用事件委托的最有效手段 在事件绑定和委派 delegate 和 on 在一般情况下 这两种方法是等效的 delegate 指定的元素 属于被选元素的子元素 添加一个或多个事件处理程序 并规定当这些事件发生时运行的函数 复制代码代码如下 jQuery1 4 3 elements delegate selector events data handler jQuer

    2026年3月26日
    2
  • centos7 文件名中文乱码_Linux服务器文件名乱码常见问题

    centos7 文件名中文乱码_Linux服务器文件名乱码常见问题1 CentOS 文件名显示乱码如下所示 原因在于 Windows 的文件名中文编码默认为 GBK 压缩或者上传后 文件名还会是 GBK 编码 而 Linux 中默认文件名编码为 UTF8 由于编码不一致所以导致了文件名乱码的问题 解决这个问题需要对文件名进行转码 处理方法 yuminstallco yconvmv fgbk tutf 8 rnotest public FTP o

    2026年3月26日
    2
  • 今天在 AGI Bar,与智谱核心研发面对面

    今天在 AGI Bar,与智谱核心研发面对面

    2026年3月12日
    3
  • 十大常用经典排序算法总结!!!

    十大常用经典排序算法总结!!!爆肝整理 堪称全网最详细的十大常用经典排序算法总结 写在开头 本文经过参考多方资料整理而成 全部参考目录会附在文章末尾 很多略有争议性的细节都是在不断查阅相关资料后总结的 具有一定普适性 总表 相关解释 稳定 如果原本序列中 a 在 b 前面且 a b 排序后 a 仍在 b 前面 顺序不变 不稳定 如果原本序列中 a 在 b 前面且 a b 排序后 a 可能在 b 后面 顺序可能发生改变 内排序 所有排序操作均在内存中完成 外排序 由于数据量太大 将其放入磁盘中 排序过程中需要磁盘与内存之间的数据传输

    2026年3月17日
    2
  • Lucene(8_2_0)核心API学习 之 TokenStream(一)「建议收藏」

    Lucene(8_2_0)核心API学习 之 TokenStream(一)「建议收藏」一、继承org.apache.lucene.analysis.TokenStreamentendsorg.apache.lucene.util.AttributeSource二、详情TokenStream是一个抽象类,是一系列Token的枚举,这里的Token有两个来源,一是Document的Fields,一是查询语句Query; 这是一个抽象类,有两个具体子类:Tokeni…

    2022年7月22日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号