用django 写一个跳转到第三方网址的代码。提示如知乎的这种跳转? 有什么思路吗?
如上图
我现在写的都是直接跳转的。用js也可以
但是我想用django来实现
比如:www.xxx.com?fads=http://www.bbb.com
这里有一个提示页面。确定后再跳
这样的django代码有什么思路?
多谢各位
用django 写一个跳转到第三方网址的代码。提示如知乎的这种跳转? 有什么思路吗?
如上图
我现在写的都是直接跳转的。用js也可以
但是我想用django来实现
比如:www.xxx.com?fads=http://www.bbb.com
这里有一个提示页面。确定后再跳
这样的django代码有什么思路?
多谢各位
要实现一个类似于知乎那样的跳转提示页面,在 Django 中你可以通过以下步骤来实现:
1. **创建视图来处理 URL 参数并显示提示页面**:
首先,你需要创建一个视图来接收包含目标 URL 的查询参数,并渲染一个包含跳转提示的模板。
2. **创建模板来显示提示信息**:
然后,你需要创建一个 HTML 模板,这个模板会显示跳转提示,并包含一个确认跳转的按钮。
3. **使用 JavaScript 来处理确认跳转**:
在模板中,你可以使用 JavaScript 来监听按钮的点击事件,并在用户确认后执行跳转。
下面是一个简单的示例:
### 1. 创建视图
在你的 Django 应用的 `views.py` 文件中,添加一个视图来处理跳转请求:
from django.shortcuts import render
from django.http import HttpResponseRedirect
def redirect_with_confirmation(request):
target_url = request.GET.get('fads', None)
if target_url:
context = {'target_url': target_url}
return render(request, 'redirect_confirmation.html', context)
else:
return HttpResponseRedirect('/') # 或者返回一个错误页面
### 2. 创建模板
在你的 Django 应用的模板目录中,创建一个名为 `redirect_confirmation.html` 的模板文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Redirect Confirmation</title>
</head>
<body>
<h1>You are being redirected</h1>
<p>Do you want to proceed to <a href="{{ target_url }}" target="_blank">{{ target_url }}</a>?</p>
<button id="confirm-button">Yes, redirect me</button>
<script>
document.getElementById('confirm-button').addEventListener('click', function() {
window.location.href = '{{ target_url|escapejs }}';
});
</script>
</body>
</html>
### 3. 配置 URL
在你的 Django 应用的 `urls.py` 文件中,添加一个 URL 模式来映射到这个视图:
from django.urls import path
from .views import redirect_with_confirmation
urlpatterns = [
# 其他 URL 模式...
path('redirect/', redirect_with_confirmation, name='redirect_with_confirmation'),
]
### 4. 测试
现在,当你访问 `http://www.xxx.com/redirect/?fads=http://www.bbb.com` 时,你应该会看到一个提示页面,点击按钮后会跳转到 `http://www.bbb.com`。
这样,你就实现了一个带有确认提示的跳转功能。
3 回答3.2k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答1.8k 阅读✓ 已解决
3 回答1.8k 阅读
1 回答1.5k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
def tiaozhuan(request, weburl):
path(r'tiaozhuan/<path:weburl>/', tiaozhuan, name='tiaozhuan'),
解决了,就用上面。虽然不是很完美,好像没法用 /?target=http://www.bbb.com 这样的,只能用:/target/http://www.bbb.com, django 的路由里不用写?=等?
我在路由里用:path(r'tiaozhuan/?target=<path:weburl>', tiaozhuan, name='tiaozhuan'), 就不行,只有去掉:?target= 才可以,