|
| 1 | +### render() |
| 2 | +**render(request, template_name, context=None, content_type=None, status=None, using=None)** |
| 3 | + |
| 4 | +将给定的模板与给定的上下文字典组合在一起,并以渲染的文本返回一个HttpResponse对象。 |
| 5 | +##### 参数 |
| 6 | +* request:必选,请求对象 |
| 7 | +* template_name: 必选,要使用的模板的全名或模板名称的序列. |
| 8 | +* context:要添加到模板上下文的值的字典。 |
| 9 | +```python |
| 10 | +from django.shortcuts import render |
| 11 | +def my_view(request): |
| 12 | + return render(request, 'myapp/index.html', { |
| 13 | + 'foo': 'bar', |
| 14 | + }, content_type='application/xhtml+xml') |
| 15 | +``` |
| 16 | + |
| 17 | +### redirect() |
| 18 | +**redirect(to, \*args, permanent=False, \*\*kwargs)** |
| 19 | + |
| 20 | +to:参数可以是一个模型对象(模型的get_absolute_url()函数会被调用),可以是一个视图名,也可以是硬编码URL。 |
| 21 | +```python |
| 22 | +from django.shortcuts import redirect |
| 23 | +def my_view(request): |
| 24 | + obj = MyModel.objects.get(...) |
| 25 | + return redirect(obj) |
| 26 | + |
| 27 | +def my_view(request): |
| 28 | + return redirect('some-view-name', foo='bar') |
| 29 | + |
| 30 | +def my_view(request):0 |
| 31 | + return redirect('https://example.com/') |
| 32 | +``` |
| 33 | + |
| 34 | +### get_object_or_404() |
| 35 | +示例: |
| 36 | +```python |
| 37 | +from django.shortcuts import get_object_or_404 |
| 38 | +def my_view(request): |
| 39 | + obj = get_object_or_404(MyModel, pk=1) |
| 40 | +``` |
| 41 | +等同于: |
| 42 | +```python |
| 43 | +from django.http import Http404 |
| 44 | +def my_view(request): |
| 45 | + try: |
| 46 | + obj = MyModel.objects.get(pk=1) |
| 47 | + except MyModel.DoesNotExist: |
| 48 | + raise Http404("No MyModel matches the given query.") |
| 49 | +``` |
| 50 | + |
| 51 | +### get_list_or_404() |
| 52 | +示例: |
| 53 | +```python |
| 54 | +from django.shortcuts import get_list_or_404 |
| 55 | +def my_view(request): |
| 56 | + my_objects = get_list_or_404(MyModel, published=True) |
| 57 | +``` |
| 58 | +等同于: |
| 59 | +```python |
| 60 | +from django.http import Http404 |
| 61 | +def my_view(request): |
| 62 | + my_objects = list(MyModel.objects.filter(published=True)) |
| 63 | + if not my_objects: |
| 64 | + raise Http404("No MyModel matches the given query.") |
| 65 | +``` |
0 commit comments