django
1.创建工程
django-admin.py startproject website
2.创建应用
manage.py startapp blog
3.修改seting.py
TIME_ZONE = 'Asiz/Shanghai' #修改时区
LANGUAGE_CODE = 'zh-cn' #修改语言
INSTALLED_APPS=( #添加应用名
'blog',
)
4.修改urls.py
urlpatterns = patterns('',
url(r'^blog/index/$','blog.views.index'), #url映射路径
)
5.定义一个index,在blog/views.py
#添加视图处理函数
def index(request):
return HttpResponse("<h1>hello world</h1>")
6.创建模板,blog/templates/index.html
7.修改views.py
8.启动容器
manage.py runserver
----------------------------------------------------
数据绑定:
修改blog/views.py
#添加视图处理函数
def index(request):
t = loader.get_template("index.html")
user = {"name":"tom","age":23,"sex":"male"}
person = Person("jack",25,"fmale")
book_list = ["python","ruby","java","c"]
c = Context({"title":"django","user":person,"book_list":book_list})
return HttpResponse(t.render(c))
#模板页面index.html 绑定变量 使用双大括号
<li>{{user.name}} <li>
<li>{{book_list.0}} <li>
#模板页面index.html if语句,for语句
{% if not user.age %}
<li>user.age 为 0 <li>
{% endif %}
{% for book in book_list %}
<li>{{book}}<li>
{% empty %}
<li>没有数据</li>
{% endfor %}
{% if not user.age %}
<li>user.age 为 0 <li>
{% else %}
<li> 年龄大于0</li>
{% endif %}
---------------------------------------------------------
过滤器
#upper 为转换大写的内置过滤器 例如:lower ,capfirst
{% for book in book_list %}
<li>{{book | upper }}<li>
{% endfor %}
#date 为日期格式化的内置过了器
{{today | date:"Y-m-d"}}
自定义过滤器
1. 在应用目录下面创建templatetags文件夹,里面创建__init__.py文件
将这个templatetags文件夹作为一个python包
2.在templatetags包下面创建过滤器python文件,
例如:percent.py
from diango import template
register = template.Library()
#自定义过滤器函数
def percent(value):
return value+"%"
#将自定义过滤器函数注册进入过滤器中,页面就可以使用了
register.filter(percent)
3.页面使用:
{% load percent%} #必须要先加载过滤器
<li> today is {{ today | percent}}</li> #使用自定义的过滤器
-------------------------------------------------------------------------
url配置
通过修改urls.py,实现url映射
urlpatterns = patterns('blog.views',
url(r'^blog/index/$','index'), #url映射路径
)
urlpatterns = patterns('blog.views',
url(r'^blog/',include('blog.urls')), #include函数引入的urls.py文件是放在应用(blog)目录下面的urls.py文件
)
url传值,映射
urlpatterns = patterns('blog.views',
url(r'^blog/index/$','index'), #url映射路径
url(r'^foo/(\d{4})/(\w+)/$','foo'), #restful风格的路径 例如:foo/1234/abc
url(r'^bar/(?P<id>\d{4})/(?P<name>\w+)/$','bar'), # ?P<id>,?P<name> ,定义了视图函数的参数变量名为id,name,
)
url路径:time?id=1123
视图函数获取参数,例如:
def time(request):
t = loader.get_template("index.html")
id = request.GET.get("id") #获取url中的参数值
c = Context({"title":"django","id":id})
return HttpResponse(t.render(c))
---------------------------------------------------
settings.py 中配置数据库:
DATABASES
models.py 中定义ORM的实体对象
例子:
from django.db import models
class Teacher(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50)
class Meta:
db_table = 'teacher'
class Student(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50)
age = models.IntegerField()
intime= models.DateField()
teacher = models.ForeignKey(Teacher)
class Meta:
db_table = 'student'
manage.py syncdb 将实体对象同步到数据库中,创建对应的表
-----------------------------------------------------------------------
用户信息扩展方式
1) profile扩展,也就是外键表扩展
2)继承AbstractUser
1.创建工程
django-admin.py startproject website
2.创建应用
manage.py startapp blog
3.修改seting.py
TIME_ZONE = 'Asiz/Shanghai' #修改时区
LANGUAGE_CODE = 'zh-cn' #修改语言
INSTALLED_APPS=( #添加应用名
'blog',
)
4.修改urls.py
urlpatterns = patterns('',
url(r'^blog/index/$','blog.views.index'), #url映射路径
)
5.定义一个index,在blog/views.py
#添加视图处理函数
def index(request):
return HttpResponse("<h1>hello world</h1>")
6.创建模板,blog/templates/index.html
7.修改views.py
8.启动容器
manage.py runserver
----------------------------------------------------
数据绑定:
修改blog/views.py
#添加视图处理函数
def index(request):
t = loader.get_template("index.html")
user = {"name":"tom","age":23,"sex":"male"}
person = Person("jack",25,"fmale")
book_list = ["python","ruby","java","c"]
c = Context({"title":"django","user":person,"book_list":book_list})
return HttpResponse(t.render(c))
#模板页面index.html 绑定变量 使用双大括号
<li>{{user.name}} <li>
<li>{{book_list.0}} <li>
#模板页面index.html if语句,for语句
{% if not user.age %}
<li>user.age 为 0 <li>
{% endif %}
{% for book in book_list %}
<li>{{book}}<li>
{% empty %}
<li>没有数据</li>
{% endfor %}
{% if not user.age %}
<li>user.age 为 0 <li>
{% else %}
<li> 年龄大于0</li>
{% endif %}
---------------------------------------------------------
过滤器
#upper 为转换大写的内置过滤器 例如:lower ,capfirst
{% for book in book_list %}
<li>{{book | upper }}<li>
{% endfor %}
#date 为日期格式化的内置过了器
{{today | date:"Y-m-d"}}
自定义过滤器
1. 在应用目录下面创建templatetags文件夹,里面创建__init__.py文件
将这个templatetags文件夹作为一个python包
2.在templatetags包下面创建过滤器python文件,
例如:percent.py
from diango import template
register = template.Library()
#自定义过滤器函数
def percent(value):
return value+"%"
#将自定义过滤器函数注册进入过滤器中,页面就可以使用了
register.filter(percent)
3.页面使用:
{% load percent%} #必须要先加载过滤器
<li> today is {{ today | percent}}</li> #使用自定义的过滤器
-------------------------------------------------------------------------
url配置
通过修改urls.py,实现url映射
urlpatterns = patterns('blog.views',
url(r'^blog/index/$','index'), #url映射路径
)
urlpatterns = patterns('blog.views',
url(r'^blog/',include('blog.urls')), #include函数引入的urls.py文件是放在应用(blog)目录下面的urls.py文件
)
url传值,映射
urlpatterns = patterns('blog.views',
url(r'^blog/index/$','index'), #url映射路径
url(r'^foo/(\d{4})/(\w+)/$','foo'), #restful风格的路径 例如:foo/1234/abc
url(r'^bar/(?P<id>\d{4})/(?P<name>\w+)/$','bar'), # ?P<id>,?P<name> ,定义了视图函数的参数变量名为id,name,
)
url路径:time?id=1123
视图函数获取参数,例如:
def time(request):
t = loader.get_template("index.html")
id = request.GET.get("id") #获取url中的参数值
c = Context({"title":"django","id":id})
return HttpResponse(t.render(c))
---------------------------------------------------
settings.py 中配置数据库:
DATABASES
models.py 中定义ORM的实体对象
例子:
from django.db import models
class Teacher(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50)
class Meta:
db_table = 'teacher'
class Student(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=50)
age = models.IntegerField()
intime= models.DateField()
teacher = models.ForeignKey(Teacher)
class Meta:
db_table = 'student'
manage.py syncdb 将实体对象同步到数据库中,创建对应的表
-----------------------------------------------------------------------
用户信息扩展方式
1) profile扩展,也就是外键表扩展
2)继承AbstractUser