添加项目到数据库中,而不在文本框中输入

问题描述 投票:0回答:1

我试图找出如何插入,这是“产品编号”到我的“清单”数据库点击添加按钮后立即默认项。我只设法做的是插入我在文本框中输入的字符串/字符。不过,当我点击“添加”按钮,而无需在文本框中输入任何东西,我得到这个错误:

ValueError at /
The view home.views.index didn't return an HttpResponse object. It returned None instead.

这里是我的代码至今:

models.朋友

from django.db import models
from django.utils import timezone

class List(models.Model):
    item = models.CharField(max_length=200)
    date = models.DateTimeField(default = timezone.now)

    def __str__(self):
        return self.item

views.朋友

from django.shortcuts import render
from .models import List
from .forms import ListForm
from django.contrib import messages


def index(request):
    context = {
        'items': List.objects.all()
    }

    if request.method == 'POST':
        form = ListForm(request.POST or None)

        if form.is_valid():
            form.save()
            messages.success(request, ('Item has been added to the list.'))
            return render(request, 'home/index.html', context)
    else:
        return render(request, 'home/index.html', context)

forms.朋友

from django import forms
from .models import List

class ListForm(forms.ModelForm):
    class Meta:
        model = List
        fields = [
            'item',
            'date'
        ]

的index.html

<h1>To do list</h1>
{% if messages %}    
    {% for message in messages %}
        <p> {{ message }} </p>
    {% endfor %}
{% endif %}

<ul>
    {% if items %}
    {% for item in items %}
        <li>{{ item.item }}</li>
        <li>{{ item.date }}</li>
        <br>
    {% endfor %}
    {% endif %}
</ul>
<form method="POST">{% csrf_token %} 
    <input type="text" name="item">
    <input type="submit" value="Add">
</form>
python django django-models django-forms django-views
1个回答
0
投票

删除else语句和取消缩进回报。你总是想返回呈现模板,当您在成功后重定向时除外。

© www.soinside.com 2019 - 2024. All rights reserved.