#django #django-forms
Вопрос:
Я новичок в django, но чего я не понимаю, так это необходимости учитывать типы запросов GET и POST при разработке формы. Пожалуйста, обратитесь к приведенному ниже коду из django docs:
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, и она работает, и мне не нужна часть СООБЩЕНИЯ выше? Смотреть ниже:
# 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 и большинство примеров включают код для обоих методов, когда вы действительно используете только один, как в моем примере выше?
Ответ №1:
Вопрос в том… Как вы хотите обработать свои данные при отправке по ПОЧТЕ?
Помните, что ваша форма также может быть отправлена на GET… Вы можете решить, что вы хотели бы сделать, если отправите запрос в GET.