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


    前期准备工作

    首先创建好一个项目

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

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

    create  database  mysite;

    二:进行相关的配置

    在项目mysite的settings.py文件中进行

     一:

    二:

    三:

    四:

     

    五:

    三 创建表

    必须注意一下俩点:

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

    四:链接数据库

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

    五:执行相关命令

    在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>
  • 相关阅读:
    leetcode 131. Palindrome Partitioning
    leetcode 526. Beautiful Arrangement
    poj 1852 Ants
    leetcode 1219. Path with Maximum Gold
    leetcode 66. Plus One
    leetcode 43. Multiply Strings
    pytorch中torch.narrow()函数
    pytorch中的torch.repeat()函数与numpy.tile()
    leetcode 1051. Height Checker
    leetcode 561. Array Partition I
  • 原文地址:https://www.cnblogs.com/bypp/p/8635567.html
Copyright © 2020-2023  润新知