Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Python-100-Days
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
huangkq
Python-100-Days
Commits
0d2f0708
Commit
0d2f0708
authored
May 09, 2019
by
jackfrued
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新了Django部分的文档
parent
bd39f998
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
6 additions
and
3 deletions
+6
-3
03.静态资源和Ajax请求.md
Day41-55/03.静态资源和Ajax请求.md
+2
-2
04.表单的应用.md
Day41-55/04.表单的应用.md
+3
-1
05.Cookie和Session.md
Day41-55/05.Cookie和Session.md
+1
-0
CSRF.png
Day41-55/res/CSRF.png
+0
-0
No files found.
Day41-55/03.静态资源和Ajax请求.md
View file @
0d2f0708
...
@@ -122,7 +122,7 @@ def show_subjects(request):
...
@@ -122,7 +122,7 @@ def show_subjects(request):
<style>/* 此处略去了层叠样式表的选择器 */</style>
<style>/* 此处略去了层叠样式表的选择器 */</style>
</head>
</head>
<body>
<body>
<h1>
所有学科
</h1>
<h1>
千锋互联所有学科信息
</h1>
<hr>
<hr>
<div id="container">
<div id="container">
{% for subject in subjects %}
{% for subject in subjects %}
...
@@ -167,7 +167,7 @@ def show_teachers(request):
...
@@ -167,7 +167,7 @@ def show_teachers(request):
<style>/* 此处略去了层叠样式表的选择器 */</style>
<style>/* 此处略去了层叠样式表的选择器 */</style>
</head>
</head>
<body>
<body>
<h1>{{ subject.name }}
的
老师信息</h1>
<h1>{{ subject.name }}
学科
老师信息</h1>
<hr>
<hr>
{% if teachers %}
{% if teachers %}
<div id="container">
<div id="container">
...
...
Day41-55/04.表单的应用.md
View file @
0d2f0708
...
@@ -62,7 +62,9 @@ python manage.py migrate
...
@@ -62,7 +62,9 @@ python manage.py migrate
</html>
</html>
```
```
注意,在上面的表单中,我们使用了模板指令
`{% csrf_token %}`
,它的作用是在表单中生成一个随机令牌(token)来防范
[
跨站请求伪造
](
<
https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0
>
)
(通常简称为CSRF),这也是Django在提交表单时的硬性要求,除非我们专门设置了免除CSRF令牌。
注意,在上面的表单中,我们使用了模板指令
`{% csrf_token %}`
为表单添加一个隐藏域(type属性值为hidden的input标签),它的作用是在表单中生成一个随机令牌(token)来防范
[
跨站请求伪造
](
<
https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0
>
)
(通常简称为CSRF),这也是Django在提交表单时的硬性要求,除非我们专门设置了免除CSRF令牌。下图是一个关于CSRF简单生动的例子,它来自于
[
维基百科
](
<
https://zh.wikipedia.org/wiki/Wikipedia:%E9%A6%96%E9%A1%B5
>
)
。
![](
./res/CSRF.png
)
用户在提交注册表单时,我们还需要对用户的输入进行验证,例如我们的网站要求用户名必须由字母、数字、下划线构成且长度在4-20个字符之间,密码的长度为8-20个字符,确认密码必须跟密码保持一致。这些验证操作首先可以通过浏览器中的JavaScript代码来完成,但是即便如此,在服务器端仍然要对用户输入再次进行验证来避免将无效的数据库交给数据库,因为用户可能会禁用浏览器的JavaScript功能,也有可能绕过浏览器的输入检查将注册数据提交给服务器,所以服务器端的用户输入检查仍然是必要的。
用户在提交注册表单时,我们还需要对用户的输入进行验证,例如我们的网站要求用户名必须由字母、数字、下划线构成且长度在4-20个字符之间,密码的长度为8-20个字符,确认密码必须跟密码保持一致。这些验证操作首先可以通过浏览器中的JavaScript代码来完成,但是即便如此,在服务器端仍然要对用户输入再次进行验证来避免将无效的数据库交给数据库,因为用户可能会禁用浏览器的JavaScript功能,也有可能绕过浏览器的输入检查将注册数据提交给服务器,所以服务器端的用户输入检查仍然是必要的。
...
...
Day41-55/05.Cookie和Session.md
View file @
0d2f0708
## Cookie和Session
## Cookie和Session
如今,一个网站如果不通过某种方式记住你是谁以及你之前在网站的活动情况,失去的就是网站的可用性和便利性,继而很有可能导致网站用户的流式,所以记住一个用户(更专业的说法叫
**用户跟踪**
)对绝大多数Web应用来说都是必需的功能。
Day41-55/res/CSRF.png
0 → 100644
View file @
0d2f0708
151 KB
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment