龙空技术网

项目实战Django Web开发进阶-13-编辑 Form 表单

逸剑听潮 166

前言:

现时小伙伴们对“如何美化html里的form表单”大约比较讲究,同学们都想要了解一些“如何美化html里的form表单”的相关知识。那么小编同时在网摘上收集了一些关于“如何美化html里的form表单””的相关知识,希望你们能喜欢,大家一起来学习一下吧!

已经实现了点餐数据的创建和删除,这里将继续实现点餐数据的编辑功能,当然根据需求登录者只能编辑自己提交的点餐数据。

首先将 templates/order/createorder.html 修改成 create.html,其它的内容不变。

在 orders/views.py 中增加 EditOrder 函数,实现具体的编辑功能:

def EditOrder(request,order_id):    ticket = request.COOKIES.get('ticket')    if not ticket:        return HttpResponseRedirect('/users/login/')     user = User.objects.filter(ticket=ticket)    if not user:        return HttpResponseRedirect('/users/login/')    if request.method == 'POST':        # 创建 OrderForm 的实例        form = OrderForm(request.POST)        # check whether it's valid:        if form.is_valid():            # 获取用户输入            username = form.cleaned_data['username']            createdate  = form.cleaned_data['createdate']            dish = form.cleaned_data['dish']            quantity = form.cleaned_data['quantity']            spicy = form.cleaned_data['spicy']            dinnertime = form.cleaned_data['dinnertime']                        order = Order.objects.filter(id=order_id).first()            order.username = username            order.dish = dish            order.quantity = quantity            order.spicy = spicy            order.dinnertime = dinnertime            order.save()            return HttpResponseRedirect('/orders/')        else:            error_msg = form.errors.as_data()            render(request, 'orders/createorder.html', {'obj': form,'errors': error_msg,})    if request.method == 'GET':        # 根据 order_id 获取 order 数据        order = Order.objects.filter(id=order_id).first()        username = order.username        createdate = order.createdate        dish = order.dish        quantity = order.quantity        spicy = order.spicy        dinnertime = order.dinnertime                form = OrderForm(initial={"username": username,            'createdate':datetime.now().strftime('%Y-%m-%d'),            'dish':dish,            'quantity':quantity,            'spicy':spicy,            'dinnertime':dinnertime},)           return render(request, 'orders/create.html', {'obj': form, 'username':username })

在 orders/index.html 中进行判断,如果是登录者创建的数据,则增加“编辑”链接:

 {% for order in orders %}            <tr>                <td>{{ order.id }}</td>                <td>{{ order.username }}</td>                <td>{{ order.createdate|date:'Y-m-d' }}</td>                <td>{{ order.dish }}</td>                <td>{{ order.dish.restaurant }}</td>                <td>{{ order.quantity }}</td>                <td>{{ order.get_spicy_display }}</td>                <td>{{ order.get_dinnertime_display }}</td> <!--显示中餐/午餐的value-->                <td>                     {% if order.username == username %}                    <a href="{% url 'orders:edit' order.id %}">编辑</a>                      <a href="{% url 'orders:delete' order.id %}">删除</a>                    {% endif %}                </td>                </tr>        {% endfor %}

在 order/urls.py 中增加 edit 的子路由:

from django.urls import pathfrom . import viewsapp_name = 'orders'urlpatterns = [    # orders 的首页    path('', views.order, name='index'),    path('create/', views.CreateOrder, name='create'),    path('edit<int:order_id>/', views.EditOrder, name='edit'),    path('delete<int:order_id>/', views.DeleteOrder, name='delete'),]

在浏览器中输入: ,可以看到如下页面:

点击“编辑”,按钮,可以看到如下界面:

建议按照 项目实战Django Web开发-16-目录结构 的顺序进行学习 iorder 项目的开发过程。

源代码在 github 中:

标签: #如何美化html里的form表单