Django - 模板
1. map 用法:
def home(request):
List = map(str, range(100))# 一个长度为100的 List
return render(request, 'home.html', {'List': List})
# html
# 遍历到最后一项,不要加逗号
{% for item in List %}
{{ item }}{% if not forloop.last%},{% endif %}
{% endfor %}
map的参数:
forloop.counter 索引从 1 开始算
forloop.counter0 索引从 0 开始算
forloop.revcounter 索引从最大长度到 1
forloop.revcounter0 索引从最大长度到 0
forloop.first 当遍历的元素为第一项时为真
forloop.last 当遍历的元素为最后一项时为真
forloop.parentloop 用在嵌套的 for 循环中,获取上一层 for 循环的 forloop
2. 得到对应视图的网址
# views.py
def add(request, a, b):
c = int(a) + int(b)
return HttpResponse(str(c))
# urls.py
urlpatterns = patterns('',
url(r'^add/(\d+)/(\d+)/$', 'app.views.add', name='add'),
)
# name 保存的是 url前半部分的值,这样可以达到动态获取url的效果
# r'^add/(\d+)/(\d+)/$' : /add/4/5/
# r'^add2/(\d+)/(\d+)/$' : /add2/4/5/
# template html
{% url 'add' 4 5 %}
# 注意:如果是 Django1.4 的话,需要在模板开头加上 {% load url from future %},如果有 extends的话,要放在 extends后面
3. 模板中的一些操作
{% if a %}
{% elif b %}
(% else %}
{% endif %}
{% for a in List %}
{% endfor %}
逻辑操作符:==, !=, >=, <=, >, <, and, or, not, in, not in
4. 如何在模板中使用 request
# Django >= 1.8,修改 settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
...
'django.template.context_processors.request',
...
],
},
},
]
# Django <= 1.7,修改 settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages",
"django.core.context_processors.request",
)
# 加上后我们就可以在模板里操作