我真的不明白这个html的大部分功能,因为我对html不太熟悉。以及添加代币的位置,如果有人能向我解释其中的大部分功能,将不胜感激
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Raleway">
<link rel="stylesheet" href="static/css/body.css">
<body>
<div class="bgimg w3-display-container w3-text-black">
<div class="w3-display-middle w3-jumbo">
<button class=" w3-button w3-white">HSEA STOCK</button>
</div>
<div class="w3-display-topleft w3-container w3-xlarge ">
<p><button onclick="document.getElementById('id01').style.display='block'" style="width:auto;">Login</button></p>
</div>
</div>
<div id="id01" class="modal">
<form class="modal-content animate" action="/login" method="POST">
{% csrf_token %}
<div class="imgcontainer">
<span onclick="document.getElementById('id01').style.display='none'" class="close" title="Close Modal">×</span>
</div>
<div class="container">
<label for="uname"><b>Username</b></label>
<input type="text" placeholder="Enter Username" name="username" required
<label for="psw"><b>Password</b></label>
<input type="password" placeholder="Enter Password" name="passwword" required>
<button type="submit">Login</button>
<label>
<input type="checkbox" checked="checked" name="remember"> Remember me
</label>
</div>
<div class="container" style="background-color:#f1f1f1">
<button type="button" onclick="document.getElementById('id01').style.display='none'" class="cancelbtn">Cancel</button>
<span class="psw">Forgot <a href="#">password?</a></span>
</div>
</form>
</div>
<script>
// Get the modal
var modal = document.getElementById('id01');
// When the user clicks anywhere outside of the modal, close it
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
</script>
</body>
很抱歉,如果这个接缝非常明显,但我没有制作这个页面,我在为django添加csrf令牌时遇到了问题。
要在视图中利用CSRF保护,请执行以下步骤:
- 默认情况下,CSRF中间件在
MIDDLEWARE
设置中激活。如果您覆盖该设置,请记住'django.middleware.csrf.CsrfViewMiddleware'
应位于任何查看假设CSRF攻击已得到处理的中间件 - 如果禁用了它(不建议使用(,则可以在要保护的特定视图上使用
csrf_protect()
(请参见下文( -
在任何使用POST表单的模板中,如果表单用于内部URL,请在
<form>
元素内使用csrf_token
标记,例如:<form method="post">{% csrf_token %}
-
对于以外部URL为目标的POST表单,不应执行此操作,因为这会导致CSRF令牌泄漏,从而导致漏洞。
-
在相应的视图函数中,确保使用
RequestContext
来呈现响应,以便{% csrf_token %}
能够正常工作。如果您正在使用render()
函数、通用视图或contrib应用程序,则已经涵盖了这些应用程序,因为它们都使用RequestContext
。
注意
CSRF令牌也存在于DOM中,但前提是明确包括在模板中使用
csrf_token
。cookie包含规范表征;CsrfViewMiddleware
将更喜欢cookie而不是DOM中的令牌。无论如何,如果该令牌存在于DOM中,因此您应该使用cookie!
和警告
警告
如果您的视图没有呈现包含
csrf_token
模板标记的模板,Django可能不会设置CSRF令牌cookie。这是常见于将表单动态添加到页面的情况。到针对这种情况,Django提供了一个视图装饰器,它强制cookie设置:ensure_csrf_cookie().
在Jinja2模板中使用CSRF
Django的Jinja2模板后端将{{ csrf_input }}
添加到所有模板的上下文中,这相当于Django模板语言中的{% csrf_token %}
。例如:
<form method="post">{{ csrf_input }}
CSRF令牌始终放置在初始化表单标记之后。然后是所有的输入字段。
<form>
{% csrf_token %}
</form>
django官方文档很清晰,请访问https://docs.djangoproject.com/en/2.2/ref/csrf/#how-使用