Django 学习实例 第二节:实现web页面增删改查

一.准备模板文件,创建模板目录

1.在项目目录下创建templates模板目录

2.进入模板目录templates,在模板目录下创建应用名mytest的目录

3.进行mytest目录,在里面创建一个users目录

4.进入users目录,在里面创建文件:index.html,add.html,edit.html,info.html

编辑:add.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户添加页面</title>
</head>
<body>
<form action="{% url 'insertusers' %}" method="post">
    <! -- csrf 防跨站伪造攻击 >
    {% csrf_token %}
    用户名:<input type="text" name="name"><br>
    年龄:<input type="text" name="age"><br>
    手机号:<input type="text" name="phone"><br>
    <button>添加用户</button>
</form>
</body>
</html>

编辑:info.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>信息</title>
</head>
<body>
{{ info }}
<br>
<script type="text/javascript">
    setTimeout(function (){
        location.href={% url u %}
    },2000)
</script>
</body>
</html>

编辑:edit.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户修改页面</title>
</head>
<body>
<form action="{% url 'updateusers' %}" method="post">
    {% csrf_token %}
    用户名:<input type="text" name="name" value="{{ userinfo.name }}"><br>
    年龄:<input type="text" name="age" value="{{ userinfo.age }}"><br>
    手机号:<input type="text" name="phone" value="{{ userinfo.phone }}"><br>
    <! --隐藏域 -->
    <input type="hidden" name="uid" value="{{ userinfo.id }}">
    <button>修改用户</button>
</form>
</body>
</html>

编译:index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户列表</title>
</head>
<body>
<a href="{% url 'addusers' %}">添加用户</a>
<table border="1" width="500">
    <tr>
        <td>ID</td>
        <td>用户名</td>
        <td>年龄</td>
        <td>手机号</td>
        <td>操作</td>
    </tr>
    {% for v in UserList %}
        <tr>
            <td>{{ v.id }}</td>
            <td>{{ v.name }}</td>
            <td>{{ v.age }}</td>
            <td>{{ v.phone }}</td>
            <td>
                <a href="{% url 'delusers' v.id %}">删除</a>
                <a href="{% url 'editusers' v.id %}">修改</a>
            </td>
        </tr>
    {% endfor %}
</table>
</body>
</html>

5.设置模板目录信息:编辑web/webapp/settings.py 文件
 

EMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],#此处添加
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

二、配置路由信息:

打开:web/webapp/urls.py路由文件,加入六条路由配置信息:

from django.urls import path,re_path
from .import views
urlpatterns = [
    path('', views.index,name="index"),
    path('users',views.indexUsers,name="users"),#浏览用户信息
    path('users/add',views.addUsers,name="addusers"),#加载添加用户信息表单
    path('users/insert',views.insertUsers,name="insertusers"),#执行用户信息添加
    re_path(r'users/(?P<uid>[0-9]+)/del$',views.delUsers,name="delusers"),#执行用户信息删除
    re_path(r'users/(?P<uid>[0-9]+)/edit$',views.editUsers,name="editusers"),#加载用户信息编辑
    path('users/update',views.updateUsers,name="updateusers"),#执行用户信息编辑
]

三、编写视图文件:web/webapp/views.py

from django.shortcuts import render,redirect
from django.urls import reverse
from django.http import HttpResponse

# Create your views here.

from mytest.models import Users

def index(request):
    try:
        list = Users.objects.all()
        context = {"UserList": list}
        return render(request, "mytest/users/index.html", context)
    except:
        return HttpResponse("数据库里没有查询到数据")

    #浏览用户信息
def indexUsers(request):
    #执行数据查询,并放置到模板中
    list = Users.objects.all()
    context = {"UserList":list}
    return render(request,"mytest/users/index.html",context)
#加载添加信息表单
def addUsers(request):
   return render(request,"mytest/users/add.html")

#执行信息添加操作
def insertUsers(request):
    try:
        ob=Users()
        ob.name=request.POST['name']
        ob.age=request.POST['age']
        ob.phone=request.POST['phone']
        ob.save()
        context = {'info':'添加成功!','u':'index'}
    except:
        context={'info':'添加失败!','u':'index'}
    return render(request,"mytest/users/info.html",context)
    #重定向,到index函数中
    # return redirect (reverse('users'))
#删除用户信息
def delUsers(request,uid):
    try:
        ob = Users.objects.get(id=uid)
        ob.delete()
        context={"info":'删除成功','u':'index'}
    except:
        context = {"info":"删除失败",'u':'index'}
    return render(request,"mytest/users/info.html",context)

#编辑用户信息
def editUsers(request,uid):
    try:
        ob = Users.objects.get(id=uid)
        context ={'userinfo':ob}
        return render(request,"mytest/users/edit.html",context)
    except:
        context ={'info':'库里没有找到需要修改的信息'}
        return render(request,"mytest/users/info.html",context)
#执行用户信息编辑
def updateUsers(request):
    try:
        ob=Users.objects.get(id=request.POST['uid'])
        ob.name=request.POST['name']
        ob.age=request.POST['age']
        ob.phone=request.POST['phone']
        ob.save()
        context = {"info":'修改成功','u':'index'}
    except:
        context={'info':"修改失败",'u':'index'}
    return render(request,"mytest/users/info.html",context)

四、效果:

 

 

 

 

 至此实现web页码实现增删除改查功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的 Django 模型定义示例: ```python from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.CharField(max_length=50) published_date = models.DateField() def __str__(self): return self.title ``` 这个模型定义了一个名为 `Book` 的数据模型,包含书的标题、作者和出版日期。`__str__` 方法用于返回模型的字符串表示。 接下来,我们需要实现一个视图来处理前端页面增删改查操作。这里我们使用 Django 自带的通用视图。 ```python from django.views.generic.list import ListView from django.views.generic.edit import CreateView, UpdateView, DeleteView from django.urls import reverse_lazy from .models import Book class BookListView(ListView): model = Book template_name = 'book_list.html' context_object_name = 'books' class BookCreateView(CreateView): model = Book template_name = 'book_form.html' fields = ['title', 'author', 'published_date'] success_url = reverse_lazy('book_list') class BookUpdateView(UpdateView): model = Book template_name = 'book_form.html' fields = ['title', 'author', 'published_date'] success_url = reverse_lazy('book_list') class BookDeleteView(DeleteView): model = Book template_name = 'book_confirm_delete.html' success_url = reverse_lazy('book_list') ``` 这个视图包含了四个类,分别用于显示书籍列表、创建、更新和删除书籍。这些视图都基于 Django 的基本视图类 `ListView`、`CreateView`、`UpdateView` 和 `DeleteView`。我们还需要定义相应的模板来呈现这些视图。 以下是一个简单的书籍列表页面模板 `book_list.html`: ```html {% extends 'base.html' %} {% block content %} <h1>Book List</h1> <ul> {% for book in books %} <li>{{ book.title }}</li> {% empty %} <li>No books yet.</li> {% endfor %} </ul> <a href="{% url 'book_create' %}">Add Book</a> {% endblock %} ``` 这个模板通过使用 Django 模板语言来迭代渲染书籍列表,并提供一个链接来添加新书籍。 以下是一个简单的书籍表单页面模板 `book_form.html`: ```html {% extends 'base.html' %} {% block content %} <h1>{% if object.pk %}Update{% else %}Create{% endif %} Book</h1> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">{% if object.pk %}Update{% else %}Create{% endif %}</button> </form> {% endblock %} ``` 这个模板渲染一个书籍表单,并提供一个提交按钮来创建或更新书籍。 以下是一个简单的书籍删除确认页面模板 `book_confirm_delete.html`: ```html {% extends 'base.html' %} {% block content %} <h1>Delete Book</h1> <p>Are you sure you want to delete "{{ object }}"?</p> <form method="post"> {% csrf_token %} <button type="submit">Delete</button> <a href="{% url 'book_list' %}">Cancel</a> </form> {% endblock %} ``` 这个模板渲染一个删除确认页面,并提供一个提交按钮来删除书籍,以及一个取消链接来返回书籍列表页面。 最后,我们需要定义一个 URL 映射来将这些视图和模板链接起来。这里使用 Django 的 URLconf 来实现。 ```python from django.urls import path from .views import BookListView, BookCreateView, BookUpdateView, BookDeleteView urlpatterns = [ path('', BookListView.as_view(), name='book_list'), path('create/', BookCreateView.as_view(), name='book_create'), path('update/<int:pk>/', BookUpdateView.as_view(), name='book_update'), path('delete/<int:pk>/', BookDeleteView.as_view(), name='book_delete'), ] ``` 这个 URL 映射将每个视图链接到相应的 URL,并指定每个视图的名称。现在,我们就可以通过访问相应的 URL 来使用这些视图了。 这样,我们就完成了一个简单的 Django 应用程序,可以进行前端页面增删改查操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

two_rain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值