Действительно ли мне нужно разместить в форме django оба формата запросов GET и POST?
Я новичок в django, но кое-что мне непонятно - это необходимость размещения обоих типов запросов GET и POST при разработке формы. Пожалуйста, обратитесь к приведенному ниже коду из документации django:
from .forms import NameForm
def get_name(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = NameForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
# ...
# redirect to a new URL:
return HttpResponseRedirect('/thanks/')
# if a GET (or any other method) we'll create a blank form
else:
form = NameForm()
return render(request, 'name.html', {'form': form})
Причина, по которой это меня смущает, заключается в том, что я разработал форму на основе GET, и она работает, и мне не нужна часть POST, описанная выше? Смотрите ниже:
# views.py
def simplifier_form(request):
form = LabelForm()
return render(request, "simplifier.html", {"form": form})
def process_simplifier(request):
label_name = request.GET.get('labels')
results = Disturbance.objects.filter(labeldisturbances__label_name=label_name)
painsresults = Pain.objects.filter(disturbances__pk__in=results).distinct()
total_disturbances = Disturbance.objects.filter(pain__pk__in=painsresults)
total_labels = Label.objects.filter(disturbances__pk__in=total_disturbances).distinct()
context = {'results': results, 'painsresults': painsresults, 'total_disturbances': total_disturbances, 'total_labels': total_labels}
return render(request,'process_simplifier.html', context)
# forms.py
class LabelForm(ModelForm):
labels = forms.ModelChoiceField(
queryset=Label.objects.all(),
to_field_name='label_name',
widget=forms.Select(attrs={'class': 'labels'}),
)
class Meta:
model = Label
fields = ['labels']
Почему же в документации по django и в большинстве примеров приводится код для обоих методов, когда на самом деле вы используете только один, как в моем примере выше?
Вопрос в том... Как вы хотите обрабатывать ваш from при отправке через POST?
Помните, что ваша форма также может быть отправлена по GET... Вы можете решить, что вы хотите сделать, если форма будет отправлена по GET.