Не получить значение формы в Джанго - PullRequest
0 голосов
/ 05 июня 2018

В Django я хочу открыть URL-адрес (он публикуется пользователем в форме) и после нажатия кнопки отправки (формы) с URL-адресом получить данные (URL-адрес) и выполнить с ними некоторые действия(печать в виде). ​​

У меня есть только одна функция в файле views.py, поэтому я думаю, что моя главная проблема в том, что у меня должно быть две.Но я не совсем уверен, как ее решить, хотя я пытался.

Моя форма такова:

<html>
    <head>
        <title>
            Practica Django
        </title>

    </head>

        <form method="POST" action="" id = "loginForm">
               {% csrf_token %}
            <input type="text" name="text" id= "text" value= '{% if submitbutton == "Submit" %} {{ firstname }} {% endif %}' maxlength="100"/>
            <input type="reset" name="Reset" id = "Reset" value="Reset" />
            <input type="Submit" name="Submit" id = "Submit" value="Submit" />

            {% if submitbutton == "Submit"  %}

            <h1 id = 4 name="resultado2"> {{ type }}</h1>
        {% endif %}

        </form>

</html>

На мой взгляд, у меня есть это:

def vistaFormulario(request,):
    text = request.POST.get('text')
    submitbutton = request.POST.get('Submit')
    m = str(text)
    print(m)
    print(text)

    # Descarga el contenido del HTML
    with urllib.request.urlopen('http://www.elmundo.es/espana/2018/06/05/5b162c3b468aebd9678b4695.html') as response:
        page = response.read()
    soup = BeautifulSoup(page, 'html.parser')
    p = soup.find_all('p')

И так продолжается.Но мне нужно открыть этот URL!Но какой бы пользователь не написал в форме и не нажал кнопку ввода!

Как видите, у меня есть два prints, просто чтобы посмотреть, какие значения имеют эти значения.У них есть None до того, как что-то набрать и нажать кнопку ввода, и после нажатия на них у них есть все, что вы написали.

То, что я хочу, это получить в этом методе все, что я ввел в кнопку изначало .Я не понимаю, почему их нет.Я хочу получить значение, а затем распечатать его.

1 Ответ

0 голосов
/ 05 июня 2018

Итак, ваша проблема в том, что вы звоните в Beautiful Soup, но вам не нужно делать это, когда пользователь изначально загружает страницу и не отправил форму.

Самое простое решениесостоит в том, чтобы поместить логику, которая вызывает bs в блок if, который срабатывает, только если вы POST:

# Define these so that they have a value to be called in the template
text = submitbutton = ''
if request.method == 'POST':
    text = request.POST.get('text')
    submitbutton = request.POST.get('Submit')
    m = str(text)
    print(m)
    print(text)

    # Descarga el contenido del HTML
    with urllib.request.urlopen('http://www.elmundo.es/espana/2018/06/05/5b162c3b468aebd9678b4695.html') as response:
       page = response.read()
   soup = BeautifulSoup(page, 'html.parser')
   p = soup.find_all('p')

# This needs to be outside your 'if' clause, so that the page will render if the method isn't POST
context = {'text': text,
           'submitbutton': submitbutton,
           'type':q1}

return render(request, 'form/form.html', context)

Из вашего примера, я не уверен, как определяется qt илиименно поэтому вы захватываете submitbutton, но это должно работать более или менее.

...