django笔记一
django笔记一
安装django
解压原码包,之后执行
python setup.py install
2)首次运行django
创建项目:
django-admin.py startproject mysite
运行测试:
python manage.py runserver 0.0.0.0:8000 &
可以看到:
添加应用
django-admin.py startapp blog
1)vim ../mysite/settings.py
INSTALLED_APPS = (
'blog',
)
2)修改url.
import blog.views ##记得导入视图
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'.*',blog.views.index),
]
3)创建视图
[root@server0 blog]# cat views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(req):
return HttpResponse("hello world")
刷新网页可以查看到
解析:1)创建要发送的网页时涉及大量的细节,设置MIME类型,状态码。Django的HttpResponse负责这些工作,将所有变量存储在一个地方,方便修改;
HttpResponse是一个函数,Django可调用它来显示网页,这个函数接受一个表示网页的请求的request对象,并返回一个response对象。
3)Url将一切关联起来,可视为 交警,确保每个请求都前往正确的地方。
使用模板
1)mkdir templates
2)Vim templates/index,html
[root@server0 templates]# cat index.html
<html>
<head>
<title>hello</title>
</head>
<body>
<h1>hello world</h1>
</body>
</html>
3)编写视图
root@server0 blog]# cat views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader,Context
# Create your views here.
def index(req):
t=loader.get_template('index.html')
c=Context({})
return HttpResponse(t.render(c))
模板解析:
1)t=loader.get_template('index.html')加载模板文件导入过来
2)Context将变量传递给模板的方式,
3)完成以后,调用模板的render()方法并将context上下文传递给它,再使用render()返回的结果创建并返回一个HttpResponse对象。
使用模板的另一种方法:
[root@server0 blog]# cat views.py
from django.shortcuts import render_to_response
def index(req):
return render_to_response('index.html',{})
利用render_to_response方法可以直接将模板加载进来。记得导入from django.shortcuts import render_to_respons。
如何动态将视图中的数据传输过去
模板:
[root@server0 blog]# cat templates/index.html
<html>
<head>
<title>{{title}}</title>
</head>
<body>
<h1>hello world {{user}}</h1>
</body>
</html>
视图函数:
[root@server0 blog]# cat views.py
from django.shortcuts import render_to_response
# Create your views here.
def index(req):
return render_to_response('index.html',{'title':'mimi','user':'kk'})
如果user是一个字典:
[root@server0 blog]# cat views.py
from django.shortcuts import render_to_response
# Create your views here.
def index(req):
user={'name':'aa','age':'18','sex':'male'}
return render_to_response('index.html',{'title':'mimi','user':user})
如果只显示性别:
[root@server0 blog]# cat templates/index.html
<html>
<head>
<title>{{title}}</title>
</head>
<body>
<h1>hello world {{user.sex}}</h1>
</body>
</html>
2)使用类:
[root@server0 blog]# cat views.py
from django.shortcuts import render_to_response
# Create your views here.
class Person():
def __init__(self,name,age):
self.name=name
self.age=age
def say(self):
return "i am "+self.name
def index(req):
mimi=Person('mimi','9')
kk=mimi.say()
user={'name':'cc','age':'2','sex':'max'}
book_list=['python','shell','java']
return render_to_response('index.html',{'title':'oo','book_list':book_list,'mimi':kk})
在模板中使用for语句
[root@server0 blog]# cat views.py
from django.shortcuts import render_to_response
# Create your views here.
class Person():
def __init__(self,name,age):
self.name=name
self.age=age
def say(self):
return "i am "+self.name
def index(req):
mimi=Person('mimi','9')
kk=mimi.say()
user={'name':'cc','age':'2','sex':'max'}
book_list=['python','shell','java']
return render_to_response('index.html',{'title':'oo','book_list':book_list,'mimi':kk})
模板:
[root@server0 blog]# cat templates/index.html
<html>
<head>
<title>{{title}}</title>
</head>
<body>
{% for book in book_list %}
<h1>{{book}}</h1>
{% endfor %}
<h3>{{mimi}}</h3>
</body>
</html>
Django模板就是HTML页面,在模板中将python内容放在{% 和 %} 和{{和}}之间,其中位与{%和%}之间的是程序代码,而位于{{}}之间的是变量,变量来自渲染模块是传递给他的上下文,
标签:{% for %} 结束循环时用{% endfor %}
渲染模板的另一种方法:
[root@server0 blog]# cat views.py
from django.template import loader,Context
from django.http import HttpResponse
from django.shortcuts import render_to_response
# Create your views here.
class Person():
def __init__(self,name,age):
self.name=name
self.age=age
def say(self):
return "i am "+self.name
def index(req):
mimi=Person('mimi','9')
kk=mimi.say()
user={'name':'cc','age':'2','sex':'max'}
book_list=['python','shell','java']
t=loader.get_template('index.html')
c=Context({'title':'hello','book_list':book_list,'mimi':kk})
return HttpResponse(t.render(c))