美文网首页
Python学习

Python学习

作者: 逛逛_堆栈 | 来源:发表于2021-05-11 18:19 被阅读0次

    python Django(三)

    Django单表操作-SQLite3

    1、创建应用

    1.1、添加应用

    py manage.py startapp studentmanager
    

    1.2、修改配置

    修改settings.py文件的INSTALLED_APPS配置项

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'studentmanager', # 注册自己的应用
    ]
    

    2、生成数据表

    2.1、创建模型

    class StudentInfo(models.Model):
        # id = models.AutoField(primary_key=True)  # id 会自动创建,可以手动写入
        name = models.CharField(max_length=30)  # 字符串
        sex = models.CharField(max_length=2)  # 性别
        birth = models.DateField()  # 日期类型
    

    2.2、生成迁移文件

    根据模型类型生成sql语句。

    py manage.py makemigrations
    

    生成的迁移文件就在migrations文件夹下

    operations = [
            migrations.CreateModel(
                name='StudentInfo',
                fields=[
                    ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                    ('name', models.CharField(max_length=30)),
                    ('sex', models.CharField(max_length=2)),
                    ('birth', models.DateField()),
                ],
            ),
        ]
    

    使用的数据库settings文件中默认是sqlite3,项目中出现文件db.sqlite3

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }
    

    这里使用的是社区版的pycharm,查看sqlite3数据库,需要借助插件Database Navigator

    2.3、执行迁移

    执行sql语句生成数据表。

    py manage.py migrate
    

    查看生成的表


    3、数据操作

    配置应用路由

    from django.contrib import admin
    from django.urls import path
    from django.conf.urls import url,include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('stu/',include('studentmanager.urls')),  # 配置studentmanager的urls
    ]
    

    在应用下创建urls.py并配置增删改查路由

    from django.conf.urls import url
    from django.urls import path
    from studentmanager import views
    urlpatterns = [
        # 通过url设置url路由配置项
       # path('index',views.index),
       path('list', views.index),   # 显示所有
       path('save', views.save),      # 添加
       path('delete', views.delete),  # 删除
       path('update', views.update)    # 修改
    ]
    

    3.1、添加数据

    视图函数

    # 添加学生视图函数
    @csrf_exempt
    def save(request):
        if request.method == 'POST':
            name = request.POST.get('name')
            sex = request.POST.get('sex')
            birth = request.POST.get('birth')
            stu = StudentInfo(
                name = name,
                sex = sex,
                birth = birth
            )
            stu.save()
        return index(request)
    

    3.2、修改数据

    # 修改学生信息
    def update(request):
        if request.method == "POST":
            name = request.POST.get('username')
            gender = request.POST.get("gender")
            age = int(request.POST.get("age"))
            score = int(request.POST.get("score"))
            id = int(request.POST.get("id"))
            stu = StudentInfo.objects.get(id=id)
            stu.name = name
            stu.age = age
            stu.gender = gender
            stu.score = score
            stu.save()
        return index(request)
    

    3.3、删除数据

    def delete(request):
        if request.method == 'GET':
            id = request.GET.get('id')
            stu = StudentInfo.objects.filter(id = id)
            stu.delete()
        return index(request)
    

    3.4、简单查询数据

    # 显示学生信息视图函数
    def index(request):
        stus = StudentInfo.objects.all()
        return render(request,'studentmanager/stus.html',{'data':stus})
    

    3.5、页面

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>学生管理</title>
    </head>
    <body>
       <div>
            <form action="/stu/save" method="Post">
                 <input type="hidden" name="csrfmiddlewaretoken" value="{% csrf_token %}"/>
                 <input type="text" name="name" placeholder="用户名"/>
                 <input type="text" name="sex" placeholder="性别"/>
                 <input type="text" name="birth" placeholder="生日"/>
                 <input type="submit" value="添加" />
            </form>
        </div>
    
        <div>
            <table>
    
                {% for row in data %}
                <tr>
                    <td>{{ row.name }}</td>
                    <td>{{ row.sex }}</td>
                    <td>{{ row.birth }}</td>
                        <td>
                            <a href="/stu/delete?id={{row.id}}">删除</a>
                            <a href="/stu/update?id={{row.id}}">修改</a>
                        </td>
                </tr>
                {% endfor %}
            </table>
        </div>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:Python学习

          本文链接:https://www.haomeiwen.com/subject/lwlfdltx.html