python开发我爱编程

Django- 入门

2018-04-10  本文已影响19人  奋斗的老王

一) 搭建开发环境

Ubantu为例

1> 创建虚拟环境

2> 安装django

3> 创建项目

4> 目录说明

二) 设计模型

1> 设计介绍

2> 数据库配置

3> 创建应用

1. 定义模型类

说明:不需要定义主键列,在生成时会自动添加,并且值为自动增长

  from django.db import models

  class BookInfo(models.Model):
      btitle = models.CharField(max_length=20)
      bpub_date = models.DateTimeField()
      def _ _str_ _(self):
          return "%d" % self.pk

  class HeroInfo(models.Model):
      hname = models.CharField(max_length=20)
      hgender = models.BooleanField()
      hcontent = models.CharField(max_length=100)
      hBook = models.ForeignKey('BookInfo')
      def _ _str_ _(self):
          return "%d" % self.pk
2. 生成数据表
3. 测试数据操作
from booktest.models import BookInfo,HeroInfo
from django.utils import timezone
from datetime import *
b = BookInfo()
b.btitle="射雕英雄传"
b.bpub_date=datetime(year=1990,month=1,day=10)
b.save()
b
b.id
b.btitle
b.btitle=u"天龙八部"
b.save()
4. 关联对象的操作
  h=HeroInfo()
  h.htitle=u'郭靖'
  h.hgender=True
  h.hcontent=u'降龙十八掌'
  h.hBook=b
  h.save()

三) 管理站点

1> 服务器

2> 管理操作

1. 使用django的管理
2. 管理界面本地化
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
3. 向admin注册booktest的模型
from django.contrib import admin
from models import BookInfo
admin.site.register(BookInfo)
4. 自定义管理页面
class QuestionAdmin(admin.ModelAdmin):
    ...
admin.site.register(Question, QuestionAdmin)

3> 管理操作关联对象

4> 管理操作布尔值的显示

四) 视图

1> 视图

2> URLconf

五) 模板

模板

'DIRS': [os.path.join(BASE_DIR, 'templates')],
{{输出值,可以是变量,也可以是对象.属性}}
{%执行代码段%}

定义index.html模板

<!DOCTYPE html>
<html>
<head>
  <title>首页</title>
</head>
<body>
<h1>图书列表</h1>
<ul>
{%for book in booklist%}
<li>
  <a href="{{book.id}}">
    {{book.btitle}}
  </a>
</li>
{%endfor%}
</ul>
</body>
</html>

定义detail.html模板

<!DOCTYPE html>
<html>
<head>
  <title>详细页</title>
</head>
<body>
<h1>{{book.btitle}}</h1>
<ul>
  {%for hero in book.heroinfo_set.all%}
  <li>{{hero.hname}}---{{hero.hcontent}}</li>
  {%endfor%}
</ul>
</body>
</html>

使用模板

from django.http import HttpResponse
from django.template import RequestContext, loader
from models import BookInfo

def index(request):
    booklist = BookInfo.objects.all()
    template = loader.get_template('booktest/index.html')
    context = RequestContext(request, {'booklist': booklist})
    return HttpResponse(template.render(context))

def detail(reqeust, id):
    book = BookInfo.objects.get(pk=id)
    template = loader.get_template('booktest/detail.html')
    context = RequestContext(reqeust, {'book': book})
    return HttpResponse(template.render(context))

去除模板的硬编码

<a href="{{book.id}}">

url(r'^book/([0-9]+)/$', views.detail),

url(r'^admin/', include(admin.site.urls, namespace='booktest')),

url(r'^book/([0-9]+)/$', views.detail, name="detail"),

<a href="{%url 'booktest:detail' book.id%}">

Render简写

from django.shortcuts import render
from models import BookInfo

def index(reqeust):
    booklist = BookInfo.objects.all()
    return render(reqeust, 'booktest/index.html', {'booklist': booklist})

def detail(reqeust, id):
    book = BookInfo.objects.get(pk=id)
    return render(reqeust, 'booktest/detail.html', {'book': book})
上一篇 下一篇

猜你喜欢

热点阅读