Django формы не обрабатываются с запросом POST - PullRequest
0 голосов
/ 21 июня 2020

Я написал самое простое c Django приложение, чтобы понять формы, указанные ниже. Когда я ввожу необходимые данные в поля и нажимаю «Отправить», код после «if request.method == 'POST'» игнорируется. Меня перенаправляют на соответствующую страницу, и в моей базе данных создается запись с именем «Джон» и фамилией «Смит». Как видно из приведенного ниже кода, этот объект следует создавать только в том случае, если метод запроса не является POST. Я знаю, что я установил метод запроса на POST, потому что это то, что показано на моем CMD, так что происходит ??

Вот мой индекс шаблона. html ':

<!DOCTYPE html>
<html>
<head>
    <title>Welcome to the site</title>
</head>
<body>
    <form action="thanks/" method='POST'>
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" vlaue="Submit">
    </form>
</body>
</html>

Вот мой файл views.py:

from django.shortcuts import render
from django.http import HttpResponseRedirect
from .forms import NewObjectForm
from .models import Object

# Create your views here.

def index(request):
    if request.method == 'POST':
        form=NewObjectForm(request.POST)
        if form.is_valid():
            first_name=form.cleaned_data['first_name']
            last_name=form.cleaned_data['last_name']
            a=Object.create(first_name=first_name,last_name=last_name)
            a.save()
            return HttpResponseRedirect('/thanks/')
        else:
            new=Object.create(first_name="Not",last_name="Valid")
            new.save()
    else:
        #Code which is run if the request.method is not equal to 'POST'
        form=NewObjectForm()
        newer=Object.objects.create(first_name="John",last_name="Smith")
        newer.save()
    return render(request,'formapp/index.html',{'form':form})

def end(request):
    return render(request,'formapp/thanks.html')

Вот файл urls.py из основного проекта:

"""experimentalForms URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('',include('formapp.urls')),
    path('admin/', admin.site.urls),
]

А вот файл urls.py из мое приложение:

'''
URLs for formapp
'''
from django.urls import path
from . import views

app_name="formapp"

urlpatterns=[
    path('',views.index,name='index'),
    path('thanks/',views.end),
]

1 Ответ

0 голосов
/ 21 июня 2020

Спасибо, @mbieren! Я изменил свой атрибут действия моей формы, и он работает отлично!

...