簡體   English   中英

Django表單不保存數據庫中的對象

[英]Django form not saving objects in database

我的表單沒有在數據庫中保存任何對象。 不知道為什么,嘗試了更多的方法來做到這一點,但沒有任何效果。

在models.py中

from django.db import models

class ProductListing(models.Model):
    product_name = models.CharField(max_length=40, blank=False)
    product_image = models.ImageField(blank=True)
    product_description = models.TextField(blank=False)
    product_price = models.DecimalField(max_digits=7, decimal_places=0, blank=True, null=True)
    product_quantity = models.DecimalField(max_digits=10, decimal_places=0)

在views.py中

from django.shortcuts import render
from .forms import addproduct_form

def addproduct_page(request, *arg, **kwarg):
    if request.method == 'POST':
        form = addproduct_form(request.POST)
        if form.is_valid():
            form.save()
    else:
        form = addproduct_form

    return render(request, 'StaffPages/add_product.html', {'productform' : form})

在模板里面

{% block content %}
{% load static %}
<link rel = "stylesheet" type = "text/css" href = "{% static 'StaffPages/add_product.css' %}"/>
<div class="maincontainer">
    <form class="addproductform">
        <div>{{productform.product_name}}</div>
        <div>{{productform.product_image}}</div>
        <div>{{productform.product_description}}</div>
        <div>{{productform.product_price}}</div>
        <div>{{productform.product_quantity}}</div>
        <input type="submit" value="Submit">
    </form>
</div>
{% endblock %}

您需要在表單中明確指定POST方法,否則,它將是GET

<form class="addproductform" method="POST"> {% csrf_token %}
    <div>{{productform.product_name}}</div>
    <div>{{productform.product_image}}</div>
    <div>{{productform.product_description}}</div>
    <div>{{productform.product_price}}</div>
    <div>{{productform.product_quantity}}</div>
    <input type="submit" value="Submit">
</form>

另外,不要忘記放置{% csrf_token %}

缺少的是;

  • 操作網址
  • csrf 令牌

例如;

{% block content %}
{% load static %}
<link rel = "stylesheet" type = "text/css" href = "{% static 'StaffPages/add_product.css' %}"/>
<div class="maincontainer">
    <form action="{% url "app_name:url_name" %}  class="addproductform">{% csrf_token %}
        <div>{{productform.product_name}}</div>
        <div>{{productform.product_image}}</div>
        <div>{{productform.product_description}}</div>
        <div>{{productform.product_price}}</div>
        <div>{{productform.product_quantity}}</div>
        <input type="submit" value="Submit">
    </form>
</div>
{% endblock %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM