Django学习笔记之创建工程、模板,标签
程序员文章站
2022-06-09 09:29:08
...
Day one:
初始化django,创建项目,不需要进入python环境
django-admin.py startproject testtwo
查看目录下文件:
dir testtwo
显示四个文件:
__init__.py manage.py setting.py urls.py
修改setting配置
添加应用
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
)
修改时区,编码等等
文首加上utf编码# -*- coding:utf-8 -*-
创建App:
django-admin.py startapp blog
修改urls
url(r'^blog/index/$','blog.views.index')
当我们访问^blog/index/$时,调用index方法
修改app下的views文件
from django.http import HttpResponse
def index(req): #视图处理方法,请求信息
return HttpResponse('<h1>hello world</h1>')#输出字符串
运行开发服务器127.0.0.1:8000
python manage.py runserver
Day two:
直接返回的方法:
return HttpResponse('<h1>hello world</h1>')#输出字符串
今天学习了返回htmml模板的方法,即在项目app文件夹里创建templates文件夹
创建html文件testindex.html,保存在其中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>csvn</title>
</head>
<body>
<h1>hello world</h1>
</body>
</html>
在views文件下面修改相应函数:
# -*- coding:utf-8 -*-
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader,Context
def index(req):
t = loader.get_template('testindex.html') #将模板文件加载过来
c = Context({}) #添加需要返回的数据,这里没有为空
return HttpResponse(t.render(c))#将数据渲染到html文件,然后返回到页面上
下面介绍动态的传递变量到html模板文件中:
testindex.html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{title}}</title>##变量用{{}}表示
</head>
<body>
<h1>hello {{user.name}}</h1> #传递字典变量
<li>{{user.age}}</li>
<li>{{user.sex}}</li>
<div> the user {{user.name}} say: {{user.say}}</div>
<li>{{book_list.0}}</li> #传递列表变量
<li>{{book_list.1}}</li>
<li>{{book_list.2}}</li>
</body>
对应在views文件中修改如下:
# -*- coding:utf-8 -*-
from django.shortcuts import render
from django.shortcuts import render_to_response
def index(req):
user = {'name':'zhangzhiahao','age':'90','sex':'male'} #以字典的方式
book_list = ['python','java','php','c++'] #以列表的方式
return render_to_response('testindex.html',{'title':'张志浩','user':user,'book_list':book_list})
#这里调用了render_to_response方法,不用分两步写了,简单快捷
# Create your views here.
还可以以对象的方式传递变量:
在views文件下面添加一个类,并在index函数中调用它
class Person(object): #继承了object类,拥有更多的方法
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def say(self):
eturn "i am" + self.name
def index(req):
user = Person('张志浩and his dog','12','male') 以对象的方式
#此时user代表的式一个Person对象:
return render_to_response('testindex.html',{'title':'张志浩','user':user)
此时在html文件中可以调用对象的变量和方法:
<div> the user {{user.name}} say: {{user.say}}</div>
下面介绍两个标签:
在html文件中使用标签:一个是判断语句,一个是循环语句:
{% if user%} #若user不为空则执行下列语句
<li> name: {{user.name}}</li>
{% else %} #否则执行下列语句
用户不存在
{% endif %}
{% for book in book_list%} #便利book_list列表中的元素
<li>{{book}}</li>
{% endfor %}
forloop.counter显示循环中的次数,即该元素的***,从1开始
{% for k,v in user.items%}
<li>{{forloop.counter}} : {{k}} : {{v}}</li>
{% endfor %}