Django中的html表单不返回
Posted
技术标签:
【中文标题】Django中的html表单不返回【英文标题】:html form in Django returns none 【发布时间】:2022-01-22 04:48:50 【问题描述】:我正在尝试将此 html 表单保存在我的数据库表中,但出现“无”错误。我已经为此做了一个小时。请任何帮助将不胜感激
请问,我该如何解决这个问题
这是我创建的 HTML order.html
<form action="" method="post" id="payment-form">
<input type="text" class="form-control" id="first_name"
name="first_name"
value="request.user.first_name">
<textarea type="text" class="form-control" id="address" name="address"
placeholder="1234 Main St" required></textarea>
<button id="submit" class="btn btn-success lg w-100 fw-bold" >
Proceed to Payment
</button>
</form>
这是我的意见.py
def add(request):
basket = Basket(request)
if request.POST.get("action") == "post":
order_key = request.POST.get("order_key")
user_id = request.user.id
baskettotal = basket.get_total_price()
first_name = request.POST.get("first_name")
last_name = request.POST.get("last_name")
address = request.POST.get("address")
print(first_name, last_name, address)
order = Order.objects.create(
first_name = first_name,
address=address,
total_paid=baskettotal,
)
order_id = order.pk
response = JsonResponse("success": "Order created")
return response
js文件
<script type="text/javascript">
function makePayment(e)
e.preventDefault();
$.ajax(
type: "POST",
url: '% url "order:add" %',
data:
csrfmiddlewaretoken: "csrf_token",
action: "post",
,
success: function (json)
console.log(json.success)
,
error: function (xhr, errmsg, err) ,
);
</script>
【问题讨论】:
您说您已经尝试了“几个小时”来解决问题,但您究竟尝试了什么?我们需要知道这一点,这样我们才能避免建议您已经尝试过的修复。 我尝试使用模型表单,但我发现很难使用样式自定义 HTML @R.Uziel 我用的是jQuery,所以这部分代码 $.ajax( type: "POST", url: '% url "order: add" %', data: csrfmiddlewaretoken: "csrf_token", action: "post", , 是我使用 if request 的原因.POST.get("action") == "post": 【参考方案1】:首先,您不必发布额外的价值 action 来确定发布请求,您只需使用 request.method
它会返回所有可用的方法,您可以通过添加来检查特定方法像这样检查
if request.method == "POST":
注意:添加此检查时始终使用大写方法
而且我不确定您在哪里调用makePayment()
函数以及您尝试在python 脚本中访问的任何数据,您必须像这样通过ajaxdata:
传递它
function makePayment(e)
e.preventDefault();
$.ajax(
type: "POST",
url: '% url "order:add" %',
data:
csrfmiddlewaretoken: "csrf_token",
order_key : "your order key",
first_name : $('#first_name').val(),
last_name : $('#last_name').val(),
address : $('#address').val()
,
success: function (json)
console.log(json.success)
,
error: function (xhr, errmsg, err) ,
);
然后像这样访问它
def add(request):
basket = Basket(request)
if request.method == "POST":
order_key = request.POST.get("order_key")
#....all other fields
【讨论】:
以上是关于Django中的html表单不返回的主要内容,如果未能解决你的问题,请参考以下文章