在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
,只是为了查看这些值具有的值。在输入内容并按下输入按钮之前,它们没有“无”,按下它后,它们就会显示您所写的内容。
我想要的是在我从开始的按钮中输入的内容中获取此方法。我不明白他们为什么没有。我想获取值,然后打印它们。
答案 0 :(得分:1)
所以,你的问题是你打电话给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
,但这应该或多或少有效。