gpt4 book ai didi

javascript - 在 Django 模板中使用 javascript 重定向尝试 - 产生无效的 url

转载 作者:行者123 更新时间:2023-12-03 08:04:45 25 4
gpt4 key购买 nike

我有一个非常简单的 Django 模板(尽管我对前端完全是菜鸟),我想在服务器的 IP 地址更改后执行 JavaScript 重定向。

这实际上是服务器配置站点的一部分,允许更改其 IP(例如路由器管理 Web 控制台)。

页面向用户显示服务器将重新启动的信息,同时服务器异步初始化重新启动序列。经过一段时间的延迟后,一个简单的 JavaScript oneliner 尝试在新的 IP 地址上重新连接服务器。

在此示例中,我尝试将 IP 从:192.168.1.31 更改为:192.168.1.41,但在显示包含信息的页面后:

# Server is now rebooting. If page doesn't open within 30 seconds, please refresh it with F5 button.
# Redirecting to: 192.168.1.41:8080/config

...我进入以下错误页面:

# Page not found (404) Request Method:  GET Request URL:       
# http://192.168.1.31:8080/config/192.168.1.41:8080/config
#
# Using the URLconf defined in cfgviewer.urls, Django tried these URL
# patterns, in this order:
#
# ^config/ ^$ [name='index']
# ^admin/
#
# The current URL, config/192.168.1.41:8080/config, didn't match any of
# these.
#
# You're seeing this error because you have DEBUG = True in your Django
# settings file. Change that to False, and Django will display a
# standard 404 page.

当 IP 地址更改并传递 redirect_address 时,主页 index.html 重定向到 reboot.html在 POST 请求中发送给它。

片段表单index.html:

(...)
context = {
(...)
'redirect_address': redirect_address,
}

return render(request, 'cfgpanel/reboot.html', context)
(...)

Django reboot.html 模板代码:

{% load staticfiles %}

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Server Configuration - rebooting...</title>
</head>
<body>

<h1>Server is now rebooting. If page doesn't open within 30 seconds, please refresh it with F5 button.</h1>

{% if redirect_address != "" %}
<div>
<h3 class="error_msg">Redirecting to: {{ redirect_address }}:8080/config</h3>
<script type="text/javascript">

window.setTimeout(function() {
var new_url = "{{ redirect_address }}:8080/config";
window.location.replace(new_url)
}, 30000);

</script>
</div>
{% endif %}

</body>
</html>

Django urls.py 代码:

from django.conf.urls import url

from . import views

app_name = "config"
urlpatterns = [
url(r'^$', views.index, name='index'),
]

问题:为什么客户端/浏览器不尝试访问我传递给它的绝对地址?如何让它打开192.168.1.41:8080/config而不是http://192.168.1.31:8080/config/192.168.1.41:8080/config?

最佳答案

正如肯达斯建议的那样:

prepending redirect_address with "http://"

完成了工作。

关于javascript - 在 Django 模板中使用 javascript 重定向尝试 - 产生无效的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34432762/

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