Django 页面展示模型创建表的数据

1,添加视图函数

Test/app8/urls.py

复制代码
from django.shortcuts import render
from .models import User


def create_user(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        email = request.POST.get('email')
        # ... 获取其他字段的值

        # 创建用户实例
        user = User(
            username=username,
            email=email,
            # ... 填充其他字段
        )
        user.save()  # 保存到数据库
        # ... 处理成功或失败的逻辑
    return render(request, '8/1.html')


from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from app8.models import Person, Passport

def delete_person(request, person_id):
    person_to_delete = get_object_or_404(Person, id=person_id)
    person_to_delete.delete()

    return HttpResponse("Person and associated Passport have been deleted.")


from django.shortcuts import render
from django.http import HttpResponse
from .models import Person, Passport
import datetime


def add_data(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        age = request.POST.get('age')
        passport_number = request.POST.get('passport_number')
        issue_date = request.POST.get('issue_date')

        person = Person(name=name, age=age)
        person.save()

        passport = Passport(person=person, passport_number=passport_number, issue_date=datetime.datetime.strptime(issue_date, '%Y-%m-%d').date())
        passport.save()

        return HttpResponse("数据已成功保存!")

    else:
        return render(request, '8\insert_data.html')


def show_data(request):
    people = Person.objects.all()
    return render(request, '8\show_data.html', {'people': people})

2,添加路由地址

Test/app8/urls.py

复制代码
from django.urls import path
from . import views


urlpatterns = [
    path('create_user', views.create_user, name='create_user'),
    path('delete_person/<int:person_id>/', views.delete_person, name='delete_person'),
    path('add_data/', views.add_data, name='add_data'),
    path('show_data/', views.show_data, name='show_data'),
]

3,访问页面

http://127.0.0.1:8000/app8/show_data/

4,优化代码实现分页

4.1 修改视图函数

复制代码
from django.core.paginator import Paginator
from django.shortcuts import render

def show_data2(request):
    people_list = Person.objects.all()
    paginator = Paginator(people_list, 10)  # 每页显示10条数据

    page_number = request.GET.get('page')
    people = paginator.get_page(page_number)

    return render(request, '8\show_data2.html', {'people': people})

4.2 修改html代码

Test/templates/8/show_data2.html

复制代码
<!DOCTYPE html>
<html>
<head>
    <title>显示数据</title>
</head>
<body>
    <table>
        <tr>
            <th>姓名</th>
            <th>年龄</th>
            <th>护照号码</th>
            <th>发行日期</th>
        </tr>
        {% for person in people %}
        <tr>
            <td>{{ person.name }}</td>
            <td>{{ person.age }}</td>
            <td>{{ person.passport.passport_number }}</td>
            <td>{{ person.passport.issue_date }}</td>
        </tr>
        {% endfor %}
    </table>

    <div class="pagination">
        <span class="step-links">
            {% if people.has_previous %}
                <a href="?page=1"><< 第一页</a>
                <a href="?page={{ people.previous_page_number }}">上一页</a>
            {% endif %}

            <span class="current">
                页码: {{ people.number }} / {{ people.paginator.num_pages }}
            </span>

            {% if people.has_next %}
                <a href="?page={{ people.next_page_number }}">下一页</a>
                <a href="?page={{ people.paginator.num_pages }}">最后一页 >></a>
            {% endif %}
        </span>
    </div>
</body>
</html>

4.3 修改路由地址

Test/app8/urls.py

复制代码
from django.urls import path
from . import views


urlpatterns = [
    path('create_user', views.create_user, name='create_user'),
    path('delete_person/<int:person_id>/', views.delete_person, name='delete_person'),
    path('add_data/', views.add_data, name='add_data'),
    path('show_data/', views.show_data, name='show_data'),
    path('show_data2/', views.show_data2, name='show_data2'),
]

4.4 访问页面

http://127.0.0.1:8000/app8/show_data2/?page=1

相关推荐
菜鸟学Python8 小时前
Python生态在悄悄改变:FastAPI全面反超,Django和Flask还行吗?
开发语言·python·django·flask·fastapi
天选之子12316 小时前
Django基本概念入门(一)
python·django·sqlite
源码之家20 小时前
计算机毕业设计:Python棉花产业数据可视化与预测系统 Django框架 ARIMA算法 数据分析 可视化 爬虫 大数据 大模型(建议收藏)✅
人工智能·python·算法·信息可视化·数据挖掘·django·课程设计
源码之家21 小时前
计算机毕业设计:Python农产品智能推荐与可视化分析系统 Flask框架 矩阵分解 数据分析 可视化 协同过滤推荐算法 深度学习(建议收藏)✅
python·矩阵·数据挖掘·数据分析·django·flask·课程设计
Betelgeuse7621 小时前
打通 Django 认证:原生 Auth 组件实战与 API 改造
后端·python·django
青花瓷21 小时前
PyCharm中创建Django基础网站
ide·pycharm·django
天选之子1231 天前
Django模板(二)
数据库·django·sqlite
小熊Coding1 天前
Python二手房数据可视化分析+预测+推荐
开发语言·python·信息可视化·django·计算机毕业设计·二手房数据分析·二手房数据可视化分析
码界筑梦坊2 天前
356-基于Python的网易新闻数据分析系统
python·mysql·信息可视化·数据分析·django·vue·毕业设计
源码之家2 天前
计算机毕业设计:Python农产品销售数据可视化分析系统 Django框架 数据分析 可视化 大数据 大模型 机器学习(建议收藏)✅
python·信息可视化·数据分析·django·flask·课程设计