首页 > 解决方案 > Django用表单保存数据

问题描述

我已经看到了很多堆栈溢出的帖子,但是在我的代码中找不到任何问题,但是这段代码并没有保存任何数据。

模型.py

from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=50, blank=True)
    content = models.CharField(max_length=200, blank=True)
    post_date = models.DateTimeField(default=datetime.now, blank=True)

    def __str__(self):
        return self.title

表格.py

from django.forms import ModelForm
from .models import Post

class PostForm(ModelForm):
    class Meta:
        model = Post
        fields = ['title', 'content', 'post_date']

视图.py

from django.shortcuts import render
from django.template import loader
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect
from django.http import Http404

from .models import Post
from .forms import PostForm
# Create your views here.

def index(request):
    latest_post_list = Post.objects.order_by('-post_date')[:5]
    template = loader.get_template('form/index.html')
    context = {'latest_post_list':latest_post_list}
    return render(request, 'form/index.html', context)

def posts(request, post_id):
    post = get_object_or_404(Post, pk=post_id)
    return render(request, 'form/posts.html', {'post':post})

def posting(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.save()
            return HttpResponseRedirect('/')
        else:
            print(form.errors)

    else:
        form = PostForm()

    return render(request, 'form/posting.html', {'form' : form})

发布.html

        <form action="/form/" method="post">    
            {% csrf_token %}
            {{ form }}
            <input type='submit' value='Submit'>
        </form>
        <script src="" async defer></script>

我发誓我看到了很多关于它的问题,但我仍然遇到了麻烦:/我认为 view.py 中的 form.save 可以使它工作,但没有。

标签: django

解决方案


尝试在您的“posting.html”中删除操作,而不是创建<input type='submit'>尝试下面的提交按钮代码。

<form method="post">    
     {% csrf_token %}
     {{ form }}
     <button type="submit">Submit</button>
</form>

推荐阅读