#django #django-views
#django #django-просмотры
Вопрос:
Я новичок в Django, поэтому во время обучения я кое-что нашел.
Некоторые люди выполняют проверку запроса, например:
def register(request):
if request.method =='POST':
# Register user
redirect()
else:
return render(request,'accounts/register.html')
Поэтому я счел это ненужным, потому что действие и метод уже указаны в моей HTML-форме.
<form action="{% url 'register' %}" method="POST">
Итак, для меня это не имеет смысла, поскольку мы отправляем post только запрос на регистрацию.
Я ошибаюсь?
Комментарии:
1. В вашей html-форме мог быть реализован не только метод post. Итак, вам нужно проверить в view, был ли это именно post или нет — вы никогда сейчас.
2. Вы используете POST для отправки. Но вы также используете это представление для отображения формы в первую очередь.
3. @kosist безусловно, если существует более одной формы, вам нужно проверить, но если у меня есть только одна форма, и в данном случае запрос был сделан только в ней, я прав, не так ли?
4. @DanielRoseman Уууууу, я совсем забыл об этом, большое вам спасибо, я понимаю, почему они делают это сейчас. Я думаю, что будет лучше создать новое представление и передавать входные данные формы, а не заставлять register () обрабатывать две вещи
5. Ну, причина, по которой это делается, заключается в том, что есть третий случай, когда имеется недействительная заявка. В этом случае мы хотим повторно отобразить шаблон с недопустимыми данными и сообщениями об ошибках. Таким образом, имеет смысл сохранить логику для отображения шаблона в том же месте.
Ответ №1:
Здесь вы используете view как для запросов GET, так и для запросов POST. Более подробное объяснение приведено в приведенном ниже коде:
def register(request):
if request.method =='POST': # comes here when you are making a post request via submitting the form
# Register user
redirect()
else: # if you are making a get request, then code goes to this block
return render(request,'accounts/register.html') # this is for rendering the html page when you hit the url
Комментарии:
1. Спасибо, это здорово
Ответ №2:
Запросы Post выполняются для отправки любого пользовательского ввода на серверную часть сервера. Чтобы просто сформулировать ваш запрос, это базовый поток веб-программы:
- Всякий раз, когда пользователь посещает сайт, вводя URL (https://example.com ), затем
GET
запрос отправляется на сервер какGET / [status_code]
. Итак, даже если шаблон в запрошенном URL содержит форму ‘POST’, сначала должен быть сделанGET
запрос. - Теперь, если пользователь заполняет форму и отправляет данные с помощью
POST
метода, сервер получает запрос какPOST / [status_code]
.
Следовательно, для обработки обоих типов запросов вам необходимо проверить выполняемый метод запроса. Я думаю, что я ответил на ваш запрос.
Комментарии:
1. Спасибо за этот подробный рабочий процесс, это действительно помогло мне