ничего не происходит при отправке формы Django - PullRequest
0 голосов
/ 04 мая 2018

У меня проблема с формами django, при отправке формы, похоже, ничего не происходит, даже сервер не получил никакого ответа, кроме GET-запроса на просмотр шаблона формы.

вот мой код для forms.py:

from django.forms import ModelForm
from .models import Post


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

и вот мой post_form.html:

{% extends 'base.html' %}


{% block content %}
    <h1>form</h1>
    <form method="POST" action=".">
        {% csrf_token %}
        {{ form.as_p }}
    </form>
    <button type="submit">Create Post</button>
{% endblock content %}

и вот моя обработка формы в views.py:

def post_create(request):

    if request.method == "POST":
        form = PostForm(request.POST)

        if form.is_valid():
            post = form.save(commit=False)
            post.save()

            return redirect("posts:detail", pk=post.pk)
    else :
        form = PostForm()

    context = {
        "form":form,
    }

    return render(request,"post_form.html", context)

1 Ответ

0 голосов
/ 04 мая 2018

forms.py

from django.forms import ModelForm
from .models import Post


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

views.py

def post_create(request):
    form = PostForm()
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save()
            return redirect("posts:detail", pk=post.pk)
    return render(request,"post-form.html", {"form": form})

после form.html

{% extends 'base.html' %}
{% block content %}
    <h1>form</h1>
    {% for error in form.non_field_errors %}
         <article class="message is-danger alert-message">
             <div class="message-body">
               <p>{{ error|escape }}</p>
             </div>
         </article>
    {% endfor %}
    <form method="POST">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="Create Post">
    </form>
{% endblock content %}
...