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 %}
{% if %} {% else %} {% endif %}

渲染模板的另一种方法:

[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))
原文地址:https://www.cnblogs.com/hanfei-1005/p/5700862.html