首页 > 解决方案 > 如何在 Django 上使用 POST 传递值?

问题描述

我尝试用 Django 做一个简单的数据库交互/简单的事情。现在,我只是做了一个简单的视图来在 html 表上显示来自数据库的信息,并且我正在尝试添加一个可以向数据库添加新信息的功能。

为此,我为表中存在的每个表列都有一个输入字段,并在数据库中添加一个添加按钮。我想让它使用 POST 方法。POST 请求将在视图上计算,该视图将在数据库中添加新值,并在页面上使用 html 表重定向,然后将显示添加的信息。

但是,我并没有设法找到我需要做的事情的解决方案。

这是我目前拥有的views.py:

from orders.models import Order #my model

class OrdersList(TemplateView):
    template_name = "orderlist.html"

    def get_context_data(self, **kwargs):
        context = super(OrdersList, self).get_context_data(**kwargs)
        orders = Order.objects.all()
        #adding values from the model to the context
        context['orders'] = []
        i = 0
        for order in orders:
            context['orders'].append(i)
            context['orders'][i] = {}
            context['orders'][i]['id'] = i+1
            context['orders'][i]['market_place'] = order.market_place
            context['orders'][i]['purchase_date'] = order.purchase_date
            context['orders'][i]['purchase_time'] = order.purchase_time
            context['orders'][i]['amount'] = order.amount
            context['orders'][i]['currency'] = order.currency
            i = i + 1
        #eventually, context['orders'] will be an array of dictionaries, one for each order present in the model
        return context

和我的 urls.py

from orders.views import *

urlpatterns = [
    path('', OrdersList.as_view(), name='home'),
    path('add/', AddOrder.as_view(), name='add')
]

所以我打算在视图上创建 AddOrder 类,该类将获取通过 POST 方法发送的值,将它们添加到数据库中,并返回 orderlist.html

然而,当我试图在网上找到答案时,它都在使用 url() 行的 urls.py 文件上,而在 views.py 中,每个视图都有一个函数;而我使用 urls.py 上的 path() 和 view.py 上的每个视图一个类来学习 Django,所以这就是我尝试的方式,但我不知道该怎么做。

编辑:我在这方面不够清楚,但是模板上有一个表格,它将向 /add/ url 发送一个 POST 请求。

标签: pythondjangopost

解决方案


推荐阅读