Biến mẫu Django
Biến mẫu
Trong các mẫu Django, bạn có thể kết xuất các biến bằng cách đặt chúng trong dấu ngoặc {{ }}
:
Tạo biến trong chế độ xem
Biến firstname
trong ví dụ trên đã được gửi tới mẫu thông qua dạng xem:
views.py
:
from django.http import HttpResponse
from django.template import loader
def testing(request):
template = loader.get_template('template.html')
context = {
'firstname': 'Linus',
}
return HttpResponse(template.render(context, request))
Chạy Ví dụ » Như bạn có thể thấy trong khung nhìn ở trên, chúng ta tạo một đối tượng có tên context và điền dữ liệu vào đó, rồi gửi nó làm tham số đầu tiên trong hàm template.render()
.
Tạo biến trong mẫu
Bạn cũng có thể tạo các biến trực tiếp trong mẫu bằng cách sử dụng thẻ mẫu {% with %}
.
Biến có sẵn cho đến khi thẻ {% endwith %}
xuất hiện:
Ví dụ
templates/template.html
:
{% with firstname="Tobias" %}
<h1>Hello {{ firstname }}, how are you?</h1>
{% endwith %}
Chạy Ví dụ »Bạn sẽ tìm hiểu thêm về thẻ mẫu trong chương tiếp theo.
Dữ liệu từ một mô hình
Ví dụ trên cho thấy một cách tiếp cận dễ dàng về cách tạo và sử dụng các biến trong một mẫu.
Thông thường, hầu hết dữ liệu bên ngoài mà bạn muốn sử dụng trong mẫu đều đến từ một mô hình.
Chúng tôi đã tạo một mô hình trong các chương trước, được gọi là Member
, mà chúng tôi sẽ sử dụng trong nhiều ví dụ ở các chương tiếp theo của hướng dẫn này.
Để lấy dữ liệu từ mô hình Member
, chúng tôi sẽ phải nhập dữ liệu đó vào tệp views.py
và trích xuất dữ liệu từ mô hình đó trong dạng xem:
members/views.py
:
from django.http import HttpResponse, HttpResponseRedirect
from django.template import loader
from .models import Member
def testing(request):
mymembers = Member.objects.all().values()
template = loader.get_template('template.html')
context = {
'mymembers': mymembers,
}
return HttpResponse(template.render(context, request))
Bây giờ chúng ta có thể sử dụng dữ liệu trong mẫu:
templates/template.html
:
<ul>
{% for x in mymembers %}
<li>{{ x.firstname }}</li>
{% endfor %}
</ul>
Chạy Ví dụ » Chúng tôi sử dụng thẻ mẫu Django {% for %}
để lặp qua các thành viên.