1、django-admin startproject xx
python manage.py runserver xxxx:xx
import django.http import HttpResponse
return HttpResponse('hello world')
from my.views import *
2 settings.py
ROOT_URLCONF='mysite.urls' === mysite/urls.py
//datetime.datetime.now()
通配符:/\d{1,2}/$,xx
3 引发404错误
imort django.http import Http404
raise Http404()
4 捕获url传参
from django.conf.urls.defaults import *
from mysite.views import hello, current_datetime, hours_ahead
urlpatterns = patterns('',
(r'^hello/
', current_datetime),
(r'^time/plus/(\d{1,2})/$', hours_ahead),
)
从url中的正则捕获的参数来作为view中方法的offset参数
from django.http import Http404, HttpResponse
import datetime
def hours_ahead(request, offset):
try:
offset = int(offset)
except ValueError:
raise Http404()
dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
html = "
In %s hour(s), it will be %s." % (offset, dt)return HttpResponse(html)
5、视图
{{ }}
{% for xx in xxx%}{% endfor %}
{% if %}{% endfor%}
{{datehe|date:"F j,y"}} 格式化
6 template视图用法
from django import template
t = template.Template('My name is {{ name }}.')
c = template.Context({'name': 'Adrian'})
print t.render(c)
My name is Adrian.
c = template.Context({'name': 'Fred'})
print t.render(c)
My name is Fred.
7 template 中引用对象的方法、属性等都是.
obj.property
obj.func 但是方法只能调用空函数,无法调用带参数的方法
8 template里的False和以下对象等价,空列表也是False
空列表([] )
空元组(() )
空字典({} )
空字符串('' )
零值(0 )
特殊对象None
对象False(很明显)
9 {%%}中不能使用()
10 {% empty %}循环中,如果值为空是显示其他内容
{% for athlete in athlete_list %}
{{ athlete.name }}
{% empty %}
There are no athletes. Only computer programmers.
{% endfor %}
11 {{ forloop.counter }}循环中的计数器:不过是从1开始
{% for item in todo_list %}
{{ forloop.counter }}: {{ item }}
{% endfor %}
forloop.firstforloop.last
//
forloop.counter0 循环计数器,但是是从0开始计数的
forloop.revcounter 循环计数器,剩余项的计数
forloop.revcounter0
forloop.first 是否第一项
{% if forloop.first %}
{% else %}{% endif %}forloop.last 是否最后一项
{% for p in places %}{{ p }}{% if not forloop.last %}, {% endif %}{% endfor %}
12 {% ifequal %}{% endequal %}判断是否相等
{% ifequal user currentuser %}
Welcome!
{% endifequal %}
13 注释:{# #}
多行注释:{% comment %}sfldjslfjsldjflk{% endcomment %}
14 过滤器:truncatewords:"30" 前30个字符
{{ bio|truncatewords:"30" }}
15 settings.py中设置模版路径
TEMPLATE_DIRS = (
'/home/django/mysite/templates',
t = template.Template('My name is {{ name }}.')
>>> c = template.Context({'name': 'Adrian'})
>>> print t.render(c)
My name is Adrian.
>>> c = template.Context({'name': 'Fred'})
>>> print t.render(c)
My name is Fred.
7 template 中引用对象的方法、属性等都是.
obj.property
obj.func 但是方法只能调用空函数,无法调用带参数的方法
8 template里的False和以下对象等价,空列表也是False
空列表([] )
空元组(() )
空字典({} )
空字符串('' )
零值(0 )
特殊对象None
对象False(很明显)
9 {%%}中不能使用()
10 {% empty %}循环中,如果值为空是显示其他内容
{% for athlete in athlete_list %}
{{ athlete.name }}
{% empty %}
There are no athletes. Only computer programmers.
{% endfor %}
11 {{ forloop.counter }}循环中的计数器:不过是从1开始
{% for item in todo_list %}
{{ forloop.counter }}: {{ item }}
{% endfor %}
forloop.firstforloop.last
//
forloop.counter0 循环计数器,但是是从0开始计数的
forloop.revcounter 循环计数器,剩余项的计数
forloop.revcounter0
forloop.first 是否第一项
{% if forloop.first %}
{% else %}{% endif %}forloop.last 是否最后一项
{% for p in places %}{{ p }}{% if not forloop.last %}, {% endif %}{% endfor %}
12 {% ifequal %}{% endequal %}判断是否相等
{% ifequal user currentuser %}
Welcome!
{% endifequal %}
13 注释:{# #}
多行注释:{% comment %}sfldjslfjsldjflk{% endcomment %}
14 过滤器:truncatewords:"30" 前30个字符
{{ bio|truncatewords:"30" }}
15 settings.py中设置模版路径
TEMPLATE_DIRS = (
'/home/django/mysite/templates',
)
t = template.Template('My name is {{ name }}.')
>>> c = template.Context({'name': 'Adrian'})
>>> print t.render(c)
My name is Adrian.
>>> c = template.Context({'name': 'Fred'})
>>> print t.render(c)
My name is Fred.
7 template 中引用对象的方法、属性等都是.
obj.property
obj.func 但是方法只能调用空函数,无法调用带参数的方法
8 template里的False和以下对象等价,空列表也是False
空列表([] )
空元组(() )
空字典({} )
空字符串('' )
零值(0 )
特殊对象None
对象False(很明显)
9 {%%}中不能使用()
10 {% empty %}循环中,如果值为空是显示其他内容
{% for athlete in athlete_list %}
{{ athlete.name }}
{% empty %}
There are no athletes. Only computer programmers.
{% endfor %}
11 {{ forloop.counter }}循环中的计数器:不过是从1开始
{% for item in todo_list %}
{{ forloop.counter }}: {{ item }}
{% endfor %}
forloop.firstforloop.last
//
forloop.counter0 循环计数器,但是是从0开始计数的
forloop.revcounter 循环计数器,剩余项的计数
forloop.revcounter0
forloop.first 是否第一项
{% if forloop.first %}
{% else %}{% endif %}forloop.last 是否最后一项
{% for p in places %}{{ p }}{% if not forloop.last %}, {% endif %}{% endfor %}
12 {% ifequal %}{% endequal %}判断是否相等
{% ifequal user currentuser %}
Welcome!
{% endifequal %}
13 注释:{# #}
多行注释:{% comment %}sfldjslfjsldjflk{% endcomment %}
14 过滤器:truncatewords:"30" 前30个字符
{{ bio|truncatewords:"30" }}
15 settings.py中设置模版路径
TEMPLATE_DIRS = (
'/home/django/mysite/templates',
)
16 render_to_response("xx.html",{"xx":xx,"yy":yy})
c = template.Context({'name': 'Adrian'})
>>> print t.render(c)
My name is Adrian.
>>> c = template.Context({'name': 'Fred'})
>>> print t.render(c)
My name is Fred.
7 template 中引用对象的方法、属性等都是.
obj.property
obj.func 但是方法只能调用空函数,无法调用带参数的方法
8 template里的False和以下对象等价,空列表也是False
空列表([] )
空元组(() )
空字典({} )
空字符串('' )
零值(0 )
特殊对象None
对象False(很明显)
9 {%%}中不能使用()
10 {% empty %}循环中,如果值为空是显示其他内容
{% for athlete in athlete_list %}
{{ athlete.name }}
{% empty %}
There are no athletes. Only computer programmers.
{% endfor %}
11 {{ forloop.counter }}循环中的计数器:不过是从1开始
{% for item in todo_list %}
{{ forloop.counter }}: {{ item }}
{% endfor %}
forloop.firstforloop.last
//
forloop.counter0 循环计数器,但是是从0开始计数的
forloop.revcounter 循环计数器,剩余项的计数
forloop.revcounter0
forloop.first 是否第一项
{% if forloop.first %}
{% else %}{% endif %}forloop.last 是否最后一项
{% for p in places %}{{ p }}{% if not forloop.last %}, {% endif %}{% endfor %}
12 {% ifequal %}{% endequal %}判断是否相等
{% ifequal user currentuser %}
Welcome!
{% endifequal %}
13 注释:{# #}
多行注释:{% comment %}sfldjslfjsldjflk{% endcomment %}
14 过滤器:truncatewords:"30" 前30个字符
{{ bio|truncatewords:"30" }}
15 settings.py中设置模版路径
TEMPLATE_DIRS = (
'/home/django/mysite/templates',
)
16 render_to_response("xx.html",{"xx":xx,"yy":yy})
from django.shortcuts import render_to_response
import datetime
def current_datetime(request):
now = datetime.datetime.now()
return render_to_response('current_datetime.html', {'current_date': now})
17 locals()
def current_datetime(request):
current_date = datetime.datetime.now()
return render_to_response('current_datetime.html', locals())
18
{% include %}
{% include 'nav.html' %}
{% include "nav.html" %}
{% block title %}{% endblock %}My helpful timestamp site
{% block content %}{% endblock %}
{% block footer %}
Thanks for visiting my site.
{% endblock %}
{% extends "base.html" %}
{% block title %}The current time{% endblock %}
{% block content %}
It is now {{ current_date }}.
{% endblock %}
extends
{% block xx%}{% endblock %}