Django запретить передачу данных в URL - PullRequest
1 голос
/ 21 апреля 2020

Я новичок в Django и веб-разработчик. В настоящее время я работаю над текстовым полем, в которое пользователь будет вводить данные. Затем они нажмут кнопку «Отправить», и я хочу, чтобы эти данные были go на другой странице. Однако, когда они нажимают кнопку отправки, весь текст заканчивается в URL. Объем текста, который будет передан в этой текстовой области, будет составлять тысячи символов. Можно ли запретить его отображение в URL?

Это мое текстовое поле и кнопка отправки:

    <form action="{% url 'parsed' %}">
        <textarea name="fulltextarea" cols=40 rows=10></textarea>
        <br />
        <input type="submit" value="Submit"/>
    </form>

urls.py

urlpatterns = [
    path('', views.home, name='jsonparser-home'),
    path('parsed/', views.parsed, name="parsed")
]

просмотров. py

def parsed(request):
    data = request.GET.get('fulltextarea')
    print(data)
    return render(request, 'jsonparser/parsed.html', {"json":data})

Теперь, когда я ввожу текст в свое текстовое поле и нажимаю кнопку отправки, мой URL получает данные в нем как:

http://localhost:8000/parsed/?fulltextarea=wefwefallmydatasubmittedishere

Это Можно ли удалить все это в URL?

Ответы [ 2 ]

2 голосов
/ 21 апреля 2020

Обычно GET-запросы используются для простых вещей, таких как поиск, фильтрация и т. Д. c. Запрос GET должен иметь никаких побочных эффектов. Это означает, что обычно запрос POST не должен приводить к добавлению новых записей в базу данных, обновлению или удалению записей и т. Д. c.

Запросы о том, что do имеют побочные эффекты, должны быть сделано через запрос POST. Затем они отправляются в заголовке HTTP-запроса. Это также делается, если форма содержит чувствительных данных, таких как пароль, поскольку в противном случае можно было бы заглянуть через плечо и увидеть пароль в строке запроса детали.

Вы можете используйте запрос POST, указав method="POST" в <form>:

<form action="{% url 'parsed' %}" <b>method="POST"</b>>
    <textarea name="fulltextarea" cols=40 rows=10></textarea>
    <br />
    <input type="submit" value="Submit"/>
</form>

В представлении вы можете получить доступ к данным с помощью:

def parsed(request):
    data = request.<b>POST</b>.get('fulltextarea')
    print(data)
    return render(request, 'jsonparser/parsed.html', {"json":data})
2 голосов
/ 21 апреля 2020

добавить метод = "POST" в вашей форме

<form action="{% url 'parsed' %}" method="POST">
...
</form>

заменить:

data = request.GET.get('fulltextarea')

на

data = request.POST.get('fulltextarea')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...