Fungsi jalan pintas Django¶
The package django.shortcuts
collects helper functions and classes that
"span" multiple levels of MVC. In other words, these functions/classes
introduce controlled coupling for convenience's sake.
render()
¶
- render(request, template_name, context=None, content_type=None, status=None, using=None)[sumber]¶
Combines a given template with a given context dictionary and returns an
HttpResponse
object with that rendered text.Django does not provide a shortcut function which returns a
TemplateResponse
because the constructor ofTemplateResponse
offers the same level of convenience asrender()
.
Argumen dibutuhkan¶
request
Objek peminta digunakan untuk membangkitkan tanggapa ini.
template_name
The full name of a template to use or sequence of template names. If a sequence is given, the first template that exists will be used. See the template loading documentation for more information on how templates are found.
Argumen pilihan¶
context
Nilai kamus untuk ditambah ke konteks cetakan. Secara awalan, ini adalah kamus kosong. Jika nilai di kamus adalah callable, tampilan akan memanggilnya sesaat sebelum membangun cetakan.
content_type
Jenis MIME digunakan untuk menghasilkan dokumen. Awalan menjadi
'text/html'
.status
Kode status untuk tanggapan. Awalan menjadi
200
.using
NAME
dari mesin cetakan untuk digunakan untuk memuat cetakan.
Contoh¶
Contoh berikut membangun cetakan myapp/index.html
dengan jenis MIME application/xhtml+xml:
from django.shortcuts import render
def my_view(request):
# View code here...
return render(
request,
"myapp/index.html",
{
"foo": "bar",
},
content_type="application/xhtml+xml",
)
Contoh ini setara pada:
from django.http import HttpResponse
from django.template import loader
def my_view(request):
# View code here...
t = loader.get_template("myapp/index.html")
c = {"foo": "bar"}
return HttpResponse(t.render(c, request), content_type="application/xhtml+xml")
redirect()
¶
- redirect(to, *args, permanent=False, **kwargs)[sumber]¶
Mengembalikan
HttpResponseRedirect
ke URL yang sesuai untuk argument dilewatkan.Argumen dapat menjadi:
Sebuah model: fungsi model's
get_absolute_url()
akan dipanggil.Nama tampilan, kemungkinan dengan argumen:
reverse()
akan digunakan untuk membalikkan-menyelesaikan nama.Sebuah URL mutlak atau relatif, yang akan digunakan dengan adanya untuk pengalihan lokasi.
Secara awalan menerbitkan pengalihan sementara; melewatkan
permanent=True
ke pengalihan tetap.
Contoh¶
Anda dapat menggunakan fungsi redirect()
dalam sejumlah cara.
Dengan melewatkan beberapa objek; metode objek
get_absolute_url()
akan dipanggil untuk mencari tahu URL pengalihan:from django.shortcuts import redirect def my_view(request): ... obj = MyModel.objects.get(...) return redirect(obj)
Dengan melewatkan nama dari tampilan dan pilihan beberapa popsisi atau argumen kata kunci; URL akan dibalikkan menggunakan metode
reverse()
:def my_view(request): ... return redirect("some-view-name", foo="bar")
Dengan melewatkan URL kode keras ke pengalihan pada:
def my_view(request): ... return redirect("/some/url/")
Ini juga bekerja dengan URL penuh:
def my_view(request): ... return redirect("https://example.com/")
Secara awalan, redirect()
mengembalikan peralihan sementara. Semua dari formulir diatas menerima argumen permanent
; jika disetel menjadi True
pengalihan tetap akan dikembalikan:
def my_view(request):
...
obj = MyModel.objects.get(...)
return redirect(obj, permanent=True)
get_object_or_404()
¶
- aget_object_or_404(klass, *args, **kwargs)¶
Asynchronous version:
aget_object_or_404()
Memanggil
get()
pada pengelola model diberikan, tetapi itu memunculkanHttp404
daripada eksepsi modelDoesNotExist
.
Argumen¶
Contoh¶
Contoh berikut mendapatkan objek dengan primary key 1 dari MyModel
:
from django.shortcuts import get_object_or_404
def my_view(request):
obj = get_object_or_404(MyModel, pk=1)
Contoh ini setara pada:
from django.http import Http404
def my_view(request):
try:
obj = MyModel.objects.get(pk=1)
except MyModel.DoesNotExist:
raise Http404("No MyModel matches the given query.")
Kasus penggunaan paling umum adalah melewatkan Model
, seperti ditunjukkan diatas. Bagaimanapun, anda dapat juga melewatkan instance QuerySet
:
queryset = Book.objects.filter(title__startswith="M")
get_object_or_404(queryset, pk=1)
Contoh di atas agak dibuat-buat karena setara dengan melakukan:
get_object_or_404(Book, title__startswith="M", pk=1)
tetapi itu dapat berguna jika anda melewati variabel queryset
dari tempat lain.
Akhirnya, anda dapat juga menggunakan Manager
. Ini berguna untuk contoh jika anda mempunyai custom manager:
get_object_or_404(Book.dahl_objects, title="Matilda")
Anda dapat juga menggunakan related managers
:
author = Author.objects.get(name="Roald Dahl")
get_object_or_404(author.book_set, title="Matilda")
Catat: Seperti get()
, eksepsi MultipleObjectsReturned
akan dimunculkan jika lebih dari satu objek ditemukan.
aget_object_or_404()
function was added.
get_list_or_404()
¶
- aget_list_or_404(klass, *args, **kwargs)¶
Asynchronous version:
aget_list_or_404()
Mengembalikan hasil dari
filter()
pada pengelola model yang diberikan dilemparkan ke list, memunculkanHttp404
jika menghasilkan list adalah kosong.
Argumen¶
Contoh¶
Contoh berikut mendapatkan semua objek diterbitkan dari MyModel
:
from django.shortcuts import get_list_or_404
def my_view(request):
my_objects = get_list_or_404(MyModel, published=True)
Contoh ini setara pada:
from django.http import Http404
def my_view(request):
my_objects = list(MyModel.objects.filter(published=True))
if not my_objects:
raise Http404("No MyModel matches the given query.")
aget_list_or_404()
function was added.