Skip to content

Commit 63a778e

Browse files
committed
更新md
更新md
1 parent b73c96c commit 63a778e

File tree

3 files changed

+62
-0
lines changed

3 files changed

+62
-0
lines changed

django_note/main.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@
66
4. [Django入门-聚合](聚合.md)
77
#### 处理HTTP请求
88
5. [Django入门-URL调度器](URL调度器.md)
9+
6. [Django入门-编写视图](编写视图.md)
10+
7. [Django入门-快捷函数](快捷函数.md)

django_note/快捷函数.md

Whitespace-only changes.

django_note/编写视图.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
* 视图是一个python函数,接收web请求并返回一个web响应。
2+
* 响应可以是HTML页面,或者重定向,或者404和其他任何内容。
3+
* 约定将视图放在views.py下面。
4+
5+
### 1.一个简单的视图
6+
* 每个视图都会将HttpRequest对象作为第一个参数,通常名为request。
7+
* 视图返回一个包含生成的响应的HttpResponse对象。
8+
9+
```python
10+
from django.http import HttpResponse
11+
import datetime
12+
13+
def current_datetime(request):
14+
now = datetime.datetime.now()
15+
html = "<html><body>It is now %s.</body></html>" % now
16+
return HttpResponse(html)
17+
```
18+
19+
### 2.url与视图映射
20+
[URL调度器](URL调度器.md)
21+
### 3.HttpResponseNotFound 与 Http404
22+
##### HttpResponseNotFound
23+
**HttpResponseNotFound返回错误时需要定义错误页面的HTML。**
24+
```python
25+
from django.http import HttpResponse, HttpResponseNotFound
26+
def my_view(request):
27+
if foo:
28+
return HttpResponseNotFound('<h1>Page not found</h1>')
29+
else:
30+
return HttpResponse('<h1>Page was found</h1>')
31+
```
32+
##### Http404
33+
**Django提供Http404异常。如果你在视图的任何地方引发了Http404,Django会捕捉到它并且返回标准的错误页面,连同HTTP错误代码 404 。**
34+
```python
35+
from django.http import Http404
36+
from django.shortcuts import render
37+
from polls.models import Poll
38+
def detail(request, poll_id):
39+
try:
40+
p = Poll.objects.get(pk=poll_id)
41+
except Poll.DoesNotExist:
42+
raise Http404("Poll does not exist")
43+
return render(request, 'polls/detail.html', {'poll': p})
44+
```
45+
46+
### 4.视图装饰器
47+
##### 允许的HTTP方法
48+
* require_http_methods(request_method_list): 限制视图只接受特定的请求方法。
49+
* require_GET(): 只接受GET请求。
50+
* require_POST(): 只接受POST请求。
51+
* require_safe(): 只接受GET和HEAD请求。
52+
```python
53+
from django.views.decorators.http import require_http_methods
54+
@require_http_methods(["GET", "POST"])
55+
def my_view(request):
56+
pass
57+
```
58+
59+
##### GZip压缩
60+
* gzip_page():如果浏览器允许 gzip 压缩,那么这个装饰器将压缩内容。

0 commit comments

Comments
 (0)