標籤:rtc django 視圖 相對 title 尋找 代碼 The 模板引擎
render()render(request, template_name, context=None, content_type=None, status=None, using=None)
必須參數
request:視圖接受到的requesttemplate_name:模板名稱
選擇性參數
context:上下文變數content_type:響應的MIME類型, 預設為DEFAULT_CONTENT_TYPE設定的值status:響應的狀態,預設為200using:用於載入模板的模板引擎
render_to_response()
棄用,不需要request參數的render()
render_to_response(template_name, context=None, content_type=None, status=None, using=None)redirect()redirect(to, permanent=False, *args, **kwargs)
將HttpResponseRedirect返回給傳遞的參數的適當URL。
參數可能是
- a Model,模型的get_absolute_url()方法將被調用
- a view name,可能帶有參數:reverse()將用於反向解析名稱。
- 絕對URL和相對URL
預設情況下發出臨時重新導向;傳遞permanent=True發出永久重新導向。
Examples
(1). a Model example
from django.shortcuts import redirectdef my_view(request): ... obj = MyModel.objects.get(...) return redirect(obj)
(2). a view name example
通過傳遞視圖的名稱和一些位置或關鍵字參數(可選);URL將使用reverse()方法反向解析def my_view(request):...return redirect(‘some-view-name‘, foo=‘bar‘)
(3). An absolute or relative URL example
通過傳遞一個寫入程式碼URL重新導向到def my_view(request): ... return redirect(‘/some/url/‘)# 也可以寫成全路徑def my_view(request): ... return redirect(‘https://example.com/‘)
get_object_or_404()
調用get()方法 當沒有尋找到對象時拋出http404異常
from django.shortcuts import get_object_or_404 product = get_object_or_404(Product, pk=1)
相當與以下代碼
from django.http import Http404try: product = Product.objects.get(pk=1)except MyModel.DoesNotExist: raise Http404
get_object_or_404(klass, *args, **kwargs)
參數:
klass:用於擷取對象的Model,Manage,Queryset執行個體**kwargs:用於get()和filter()查詢的條件參數
接收Queryset參數
queryset = Book.objects.filter(title__startswith=‘M‘)get_object_or_404(queryset, pk=1)
# 上邊的例子有點複雜,其實相當於以下代碼get_object_or_404(Book, title__startswith=‘M‘, pk=1)
接收自訂Managers
get_object_or_404(Book.dahl_objects, title=‘Matilda‘)
接收related Managers
author = Author.objects.get(name=‘Roald Dahl‘)get_object_or_404(author.book_set, title=‘Matilda‘)
get_list_or_404()
from django.shortcuts import get_list_or_404def my_view(request): my_objects = get_list_or_404(MyModel, published=True)
相當於以下代碼
from django.http import Http404def my_view(request): my_objects = list(MyModel.objects.filter(published=True)) if not my_objects: raise Http404("No MyModel matches the given query.")
django shortcut function