在呈现网页之前,如何在Flask中读取网页?
我想在登录到我的站点后,根据页面的版本添加有条件的新页面显示。为了简化更改,我希望我的代码从页面本身读取版本,这样将来就不需要更改代码了——只需要更改HTML。我不知道该怎么做 下面是一些伪代码:在呈现网页之前,如何在Flask中读取网页?,flask,Flask,我想在登录到我的站点后,根据页面的版本添加有条件的新页面显示。为了简化更改,我希望我的代码从页面本身读取版本,这样将来就不需要更改代码了——只需要更改HTML。我不知道该怎么做 下面是一些伪代码: @bp.route("/login", methods=['GET', 'POST']) def login:() if login_user(user, password): return redirect( url_for('whats_new'))
@bp.route("/login", methods=['GET', 'POST'])
def login:()
if login_user(user, password):
return redirect( url_for('whats_new'))
def whats_new()
# read version from header of whats_new.html
ver = get_version_from_webpage()
if ver > 3 :
return render ('whats_new.html')
else:
return redirect ('home.html')
def get_version_from_webpage():
# THIS IS WHERE I AM STUCK!
# ??????????
return ver
whats_new.html将包含版本号-可能在
如何在不首先呈现页面的情况下获取版本,您有什么想法吗?这里有一个解决方案供感兴趣的人使用。
使用requests库获取页面不会显示它,因为它不是Python。 获取的响应包含整个页面,因此需要对其进行解析以找到所需的数据。这里有一个叫做BeautifulSoup的图书馆 这是我的工作代码
def get_pageversion(url):
# retrieves content value of meta field 'version'
# <meta name="version" content="4"/> would return 4.0
try:
ret = requests.get(url)
soup = BeautifulSoup(ret.text, features="html.parser")
metas = soup.find_all('meta')
version = float(next(iter([meta.attrs['content'] for meta in metas if meta.attrs.get('name') == 'version'])))
return version
except:
return 0
def get_页面版本(url):
#检索元字段“版本”的内容值
#将返回4.0
尝试:
ret=requests.get(url)
soup=BeautifulSoup(ret.text,features=“html.parser”)
metas=soup.find_all('meta'))
version=float(下一步(iter([meta.attrs['content']表示metas中的meta,如果meta.attrs.get('name')=='version']))
返回版本
除:
返回0
您能解释一下为什么要将版本硬编码为html文件吗?我对你在这里的目标有点不习惯,我希望避免每次更新“最新信息”页面时都触碰代码或数据库,并允许每个用户在阅读该页面时隐藏该页面(不再查看)。当然,这一切都可以在db中完成,但我正试图通过在页面本身中“简单地”设置一个版本来实现。