【Python_Django开发笔记(三)——实例】

前言

正式进入项目实例,完成简单项目开发。

一点点准备工作

  1. 新建项目django-admin startproject myproject
  2. 生成应用程序 python manage.py startapp employee
  3. 建立数据库,连接数据库
  4. 在models.py中建立数据模型(类)
  5. 生成数据库表

生成命令如下:

python manage.py makemigrations
python manage.py migrate

数据模型类示例如下:

from django.db import models
# Create your models here.
# 单位数据模型
class Group(models.Model):
    group_name = models.CharField(max_length=32, verbose_name="所在单位")
    group_script = models.CharField(max_length=60, verbose_name='备注')

路由与视图的对应

为了层次清晰,我们建立两级URL配置文件,根URL是根目录下的urls.py文件,如下:

from django.contrib import admin
from django.urls import path, include
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    #path('index/', views.index),
    path('employee/', 
    # include()函数把二级配置包含进来
    include('employee.urls')),
]

二级URL配置文件如下:
path()函数的两个参数分别为相对路径、视图函数名

from django.urls import path

# 导入视图函数,*代表所有
# 建立数据表(UserInfo、Group)的增删改查配置项
from employee.views import *

urlpatterns = [
    # 操作人员数据表(UserInfo)相关URL配置项
    path('list_userinfo/', list_userinfo),
    # path('add_userinfo', add_userinfo),
    # path('edit_userinfo', edit_userinfo),
    # path('del_userinfo', del_userinfo),
    # 所在单位(Group)相关URL配置项
    path('list_group/', list_group),
    path('add_group/', add_group),
    path('del_group/<int:group_id>/', del_group),
    path('edit_group/<int:group_id>/', edit_group),
]

通过访问路径示例为:http://127.0.0.1:8000/employee/list_userinfo/

增删改查的函数与显示

万事俱备只欠东风,完成了数据库表和URL的创建,现在正式编写函数和动态显示界面。
在employee/views.py文件中编写相对应的视图函数,函数名据上。

实现列表查询

视图函数

#导入响应模块
from django.shortcuts import render, redirect, HttpResponse
#导入数据模型
from .models import UserInfo, Group

# Create your views here.
def list_group(request):
    group_list = Group.objects.all()
    return render(request, 'list_group.html', {'group_list': group_list})

html文件代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>人员信息列表</title>
</head>
<body>
<div align="center">
    <h1>人员信息列表</h1>
    <hr>
    <div><a href="/employee/add_group">增加一条记录</a> </div>
    <table border="1">
        <thead>
        <tr>
            <td>所在单位</td>
            <td>备注</td>
        </tr>
        </thead>
        <tbody>
    <!--传参 自list_userinfo函数传过来的是列表group_list 该列表来自数据模型 Group-->
        {% for group in group_list %}
        <tr>
            <td>{{  group.group_name }}</td>
            <td>{{ group.group_script }}</td>
            <td><a href="/employee/del_group/{{ group.id }}/">删除</a> </td>
            <td><a href="/employee/edit_group/{{ group.id }}/">修改</a> </td>
        </tr>
        {% empty %}
            <tr>
                <td colspan="4">无相关记录!</td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
</div>
</body>
</html>

实现列表增加

view函数

放在同一文件中,续写:

def add_group(request):
#前端提交数据POST,获取前端HTML文件中form的<input>标签中的值
    if request.method == 'POST':
        group_name = request.POST.get('group_name')
        group_script = request.POST.get('group_script')
        if group_name.strip() == '':
            return render(request, 'add_group.html', {'error_info': '单位名称不能为空'})
        try:
# 获取前端传值后,新建一条记录
            p = Group.objects.create(group_name=group_name, group_script=group_script)
            # 此处匹配的是urls.py中的配置项,返回语句执行list_group()视图函数
            return redirect('/employee/list_group/')
        except Exception as e:
            return render(request, 'add_group.html', {'error_info': '输入单位重复或信息错误'})
        finally:
            pass
# 不是POST请求,表示是第一次请求增加界面,就跳转到增加界面
    return render(request, 'add_group.html')

HTML文件代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>增加部门</title>
</head>
<body>
<div align="center">
  <h1>增加部门</h1>
  <hr>
  <!-- 设置form表单中的method,发生POST请求 -->
  <form action="" method="post">
    <!-- Django安全机制,防止CSRF -->
    {% csrf_token %}
    <input type="hidden" name="id" id="id" value="{{ group.id }}">
    <div>
      <label>部门:</label>
      <!-- 输入,后端通过name属性取值,id 是name的属性,函数通过属性取值 -->
        <input type="text" name="group_name" id="group_name">
    </div>
    <br>
    <div>
      <label>备注:</label>
        <input type="text" name="group_script" id="group_script">
    </div>
    <br>
    <div><input type="submit" value="保存"></div>
  </form>
</div>
<!-- 显示错误信息 -->
  {{ error_info }}
</body>
</html>

实现列表删除

view函数

继续续写:

def del_group(request, group_id):
    group_object = Group.objects.get(id=group_id)
    group_object.delete()
    return redirect('/employee/list_group/')

HTML文件代码

通过group_list界面中的按钮直接访问,不需要HTML界面。

实现列表修改

view函数

def edit_group(request, group_id):
    # 判断请求方式
    if request.method == 'POST':
        id = request.POST.get('id')
        # 获取前端提交的数据
        group_name = request.POST.get('group_name')
        group_script = request.POST.get('group_script')
        # 取出数据表记录
        group_object = Group.objects.get(id=id)
        # 给字段赋值
        group_object.group_name = group_name
        group_object.group_script = group_script
        # 保存数据到数据库表
        group_object.save()
        return redirect('/employee/list_group/')
    else:
# 不是POST提交,就是第一次请求,先取id,来自urls.py配置项,从首页获取。传参给edit_html文件
        group_object = Group.objects.get(id=group_id)
        return render(request, 'edit_group.html', {'Group': group_object})

HTML文件代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改</title>
</head>
<body>
<div align="center">
    <h1>修改部门</h1>
    <hr>
    <form action="" method="post">
        {% csrf_token %}
        <!-- 用一个type='hidden'的<input>标签保存id值,为视图函数修改记录时,提供主键值//-->
         <input type="hidden" name="id" id="id" value="{{ Group.id }}" >
        <div>
            <label>部门:</label>
                <input type="text" name="group_name" id="group_name" value="{{ Group.group_name }}">
        </div>
        <br>
        <div>
            <label>备注:</label>
                <input type="text" name="group_script" id="group_script" value="{{ Group.group_script }}">
        </div>
        <br>
        <div><input type="submit" value="保存"></div>
    </form>
    {{ error_info }}
</div>

</body>
</html>
  • 36
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python Django 是一个流行的 Web 框架,可以用于快速开发高质量的 Web 应用程序。在 Django 中,一个应用程序可以由多个模块组成,并且可以轻松地与其他应用程序集成。在这里,我将为您提供一些建议和指导,以帮助您开始使用 Django 构建学生管理系统。 1. 安装 Django: 首先,你需要安装 Django。你可以通过 pip 命令安装 Django,例如:`pip install django` 2. 创建一个 Django 项目: 接下来,你需要创建一个 Django 项目。你可以运行以下命令来创建一个名为 myproject 的新项目:`django-admin startproject myproject` 3. 创建一个 Django 应用程序: 接下来,你需要创建一个名为 students 的新应用程序。你可以运行以下命令:`python manage.py startapp students` 4. 配置数据库: Django 默认使用 SQLite 数据库。如果你想使用其他数据库(如 MySQL 或 PostgreSQL),你需要修改 myproject/settings.py 文件中的 DATABASES 设置。 5. 创建模型: 在 Django 中,模型是与数据库表对应的 Python 类。你需要在 students/models.py 文件中创建一个名为 Student 的模型,包括学生的姓名、年龄和成绩。 6. 进行数据库迁移: 在创建模型后,你需要运行以下命令来将模型同步到数据库中:`python manage.py makemigrations students`,然后运行 `python manage.py migrate` 命令进行数据库迁移。 7. 创建视图: 视图是 Django 应用程序中处理请求和生成响应的代码。你需要在 students/views.py 文件中创建一个名为 student_list 的视图,用于显示所有学生的列表。 8. 创建 URL: URL 是 Django 应用程序中的网址,它将请求路由到正确的视图。你需要在 students/urls.py 文件中创建一个 URL 模式,将 student_list 视图与 URL 路径关联起来。 9. 创建模板: 模板是 Django 中的 HTML 文件,用于呈现视图。你需要在 students/templates/students 目录中创建一个名为 student_list.html 的模板,用于显示学生列表。 10. 运行服务器: 最后,你可以运行以下命令来启动 Django 服务器:`python manage.py runserver` 这只是一个基本的概述,但它应该帮助你开始使用 Django 构建学生管理系统。如果你需要更详细的指导,请参考 Django 官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值