Python中如何处理URL相关问题

旧的 url 是 url(r'^edit-(\d+)/', views.user_edit),

新的是用 path 要怎么写!!!


Python中如何处理URL相关问题
5 回复

url(r’^edit-v2-(\d+)/’, views.user_edit)

怎么样


Python处理URL主要用urllib.parse模块,核心就几个函数:

解析URL:用urlparse()拆解完整URL

from urllib.parse import urlparse

url = "https://docs.python.org:443/3/library/urllib.parse.html?highlight=parse#urlparse"
parsed = urlparse(url)
print(f"协议: {parsed.scheme}")      # https
print(f"域名: {parsed.netloc}")      # docs.python.org:443
print(f"路径: {parsed.path}")        # /3/library/urllib.parse.html
print(f"查询: {parsed.query}")       # highlight=parse
print(f"锚点: {parsed.fragment}")    # urlparse

构建URL:用urlunparse()urlencode()

from urllib.parse import urlunparse, urlencode

# 从元组构建
parts = ('https', 'example.com', '/api/data', '', 'page=2&sort=desc', '')
full_url = urlunparse(parts)

# 编码查询参数
params = {'q': 'python教程', 'page': 1}
query_string = urlencode(params)  # q=python%E6%95%99%E7%A8%8B&page=1

编码解码:处理特殊字符

from urllib.parse import quote, unquote

encoded = quote("Python 3.10+教程")  # Python%203.10%2B%E6%95%99%E7%A8%8B
decoded = unquote(encoded)           # 还原为"Python 3.10+教程"

拼接路径:用urljoin()避免手动拼接错误

from urllib.parse import urljoin

base = "https://api.example.com/v1/"
print(urljoin(base, "users"))        # https://api.example.com/v1/users
print(urljoin(base, "/auth/login"))  # https://api.example.com/auth/login

日常开发中,requests库更常用,但底层还是这些函数。简单说就是:解析用urlparse,编码用quote/urlencode,拼接用urljoin

urlconf:
path(‘edit-v2-<int:pk>/’, views.user_edit),

view
def yourview(request, pk):
pass

我想转换的是 path 新的。不过也谢谢啦!

感谢。可以。。

回到顶部