gpt4 book ai didi

python - netloc 是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 22:24:14 27 4
gpt4 key购买 nike

我正在学习使用 Flask-login 实现登录功能,并且我在我的教程中遇到了这段代码:

@app.route('/login', methods = ['GET', 'POST'])
def login():
if current_user.is_authenticated:
return redirect(url_for('index'))
form = LoginForm()
if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()
if user is None or not user.check_password(form.password.data):
flash('Invalid username or password')
return redirect(url_for('login'))
login_user(user, remember=form.remember_me.data)
next_page = request.args.get('next')
if not next_page or url_parse(next_page).netloc != '': # what is it means in this line..?
next_page = url_for('index')
return redirect(next_page)
return render_template('login.html', title='Sign In', form=form)

但我不确定上面我评论的代码是什么意思..?,尤其是在 netloc 词中,那是什么..?,我知道那代表 network地点,但那条线的目的是什么..?

最佳答案

来自 RFC 1808, Section 2.1 ,每个 URL 都应遵循特定格式:

<scheme>://<netloc>/<path>;<params>?<query>#<fragment>

让我们从语法上分解这种格式:

  • scheme:协议(protocol)名,一般为http/https
  • netloc:包含net工作location - 其中包括域本身(和子域,如果存在)、端口号,以及使用 username:password 形式的可选凭据。它可以一起采用 username:password@example.com:80 的形式。
  • path:包含有关如何访问指定资源的信息。
  • params:为路径添加微调的元素。 (可选)
  • query:另一个元素添加了对所考虑路径的细粒度访问。 (可选)
  • 片段:包含路径中正在访问的资源的信息位。 (可选)

让我们举一个非常简单的例子来清楚地理解上面的内容:

https://cat.example/list;meow?breed=siberian#pawsize

在上面的例子中:

  • https 是方案(URL 的第一个元素)
  • cat.example 是 netloc(位于方案和路径之间)
  • /list 是路径(在 netloc 和 params 之间)
  • meow 是参数(位于路径和查询之间)
  • breed=siberian 是查询(在片段和参数之间)
  • pawsize 是片段(URL 的最后一个元素)

这可以使用 Python 的 urllib.parse.urlparse 以编程方式复制:

>>> import urllib.parse
>>> url ='https://cat.example/list;meow?breed=siberian#pawsize'
>>> urllib.parse.urlparse(url)
ParseResult(scheme='https', netloc='cat.example', path='/list', params='meow', query='breed=siberian', fragment='pawsize')

现在转到您的代码,if 语句检查 next_page 是否存在以及 next_page 是否有 netloc。在那个login()函数中,检查是否.netloc != '',意味着它正在检查是否是url_parse(next_page)的结果是一个相对 URL。相对 URL 有路径但没有主机名(因此没有 netloc)。

关于python - netloc 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53992694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com