Не перенаправлять на другую веб-страницу после выполнения Django просмотра - PullRequest
0 голосов
/ 10 марта 2020

у меня есть представление - пользователь вводит некоторые данные во входных данных (в процессе очистки. html), данные подвергаются действию, и оценка должна отображаться на следующей веб-странице (scrapingscore. html).

Моя проблема заключается в том, что после нажатия кнопки "Отправить" веб-сайт обновляется и ничего не происходит, исчезает только ввод с текстовым полем.

мой взгляд:

def scraping(request):
    rootlink = 'https://www.transfermarkt.pl'
    link = 'https://www.transfermarkt.pl/schnellsuche/ergebnis/schnellsuche?query='
    if request.method == 'POST':
        data = request.POST.get("textfield")
        if data is None:
            empty = 'Data is empty'
            return TemplateResponse(request, 'scrapingscore.html', {'empty':empty})
        else:
            data = data.replace(" ", "+")

            search = link + data + '&x=0&y=0'
            req = Request(
                    search,
                    data=None,
                    headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
                    }
                )

            req = urlopen(req).read()

            soup = BeautifulSoup(
                                req,
                                features="lxml"
                                )

            anchor = soup.find("a",{"class":"spielprofil_tooltip"})
            link = anchor.get("href")
            original_link = rootlink + link
            return TemplateResponse(request, 'scrapingscore.html', {'original_link':original_link})
    return render(request, 'scraping.html')    

очистка. html

<form action="{% url 'scraping' %}" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <input name="text" type="text" />
    <input type="submit" value="submit">
</form>

мой URL-адрес для соскоба, у меня нет URL-адреса к scrapingscore, может быть, я должен иметь это представление?

path('scraping', views.scraping, name='scraping'),

Я не знаю, как решить эту проблему - сейчас Веб-страница scrapingscore не отображается.

1 Ответ

0 голосов
/ 10 марта 2020

попробуйте

<form action="/scraping/" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <input name="text" type="text" />
    <input type="submit" value="submit">
</form>

в вашем views.py

def scraping(request):
    rootlink = 'https://www.transfermarkt.pl'
    link = 'https://www.transfermarkt.pl/schnellsuche/ergebnis/schnellsuche?query='
    if request.method == 'POST':
        data = request.POST.get("textfield")
        if data is None:
            empty = 'Data is empty'
            return render(request, 'scrapingscore.html', {'empty':empty})
        else:
            data = data.replace(" ", "+")

            search = link + data + '&x=0&y=0'
            req = Request(
                    search,
                    data=None,
                    headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
                    }
                )

            req = urlopen(req).read()

            soup = BeautifulSoup(
                                req,
                                features="lxml"
                                )

            anchor = soup.find("a",{"class":"spielprofil_tooltip"})
            link = anchor.get("href")
            original_link = rootlink + link
            return render(request, 'scrapingscore.html', {'original_link':original_link})
...