【发布时间】:2017-10-16 15:06:04
【问题描述】:
我的问题类似于Same URL in multiple views in Django,但我不是根据user_authentication渲染模板,而是根据浏览器中启用或禁用JavaScript。
我想做什么?
如果在浏览器中启用了 JavaScript,我将尝试呈现 index.html 页面,否则我想呈现 jsDisabled.html 页面,如果它被禁用并且两个页面都应该以相同的 URL 模式呈现,例如:
如果在浏览器中启用了 JavaScript,localhost:8000 应该呈现 index.html,如果 JavaScript 被禁用,它应该呈现 jsDisabled.html 页面。
注意:我正在使用 <noscript> 标记检查浏览器中是否禁用了 JavaScript,该标记将在禁用 JavaScript 时运行。
到目前为止,这是我的代码:
base.html:
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
</head>
<body class="noJs">
...
<a href="{% url 'index' 0 %}"> abc </a>
...
<noscript>
<style type="text/css">
.noJs {
display: none;
}
</style>
<meta http-equiv="refresh" content="{% ulr 'index' 1 %}"> /* This should render jsDisabled.html page on the same URL which is 'localhost:8000' */
</noscript>
</body>
</html>
urls.py:
from django.conf.urls import include, url
from django.contrib import admin
from . import views
urlpatterns = [
...
url(r'^(?P<flag>[0-1])$', views.index, name='index'),
]
views.py:
from django.shortcuts import render
def index(request, flag):
if (flag):
return render(request, 'jsDisabled.html')
else:
return render(request, 'index.html')
【问题讨论】:
-
你怎么知道js被禁用了?浏览器不会宣布这个事实。
-
<noscript>标签会告诉你。看看我的 base.html 代码。