Django сохранение данных с формой - PullRequest
0 голосов
/ 20 марта 2020

Я уже видел много сообщений о переполнении стека, но не могу найти никаких проблем с моим кодом, но этот код не сохраняет никаких данных.

models.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

forms.py

from django.forms import ModelForm
from .models import Post

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

views.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})

posting. html

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

Клянусь, я видел много вопросов по этому поводу, но все же я Я в беде: / Я думал, что form.save в views.py заставит его работать, но нет.

1 Ответ

0 голосов
/ 20 марта 2020

Попробуйте удалить действие в своем сообщении. html и вместо создания <input type='submit'> попробуйте следующий код для кнопки отправки.

<form method="post">    
     {% csrf_token %}
     {{ form }}
     <button type="submit">Submit</button>
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...