回顾上节课的三条经典命令

django-admin startproject 项目名称
#建立项目

python manage.py startapp blog
#建立项目内站点

python manage.py runserver
#启动服务
#runserver后面可以带端口号,表示运行是的端口



Tmeplates:



python 3.5 django 笔记(二)Tmeplates与models_第1张图片


(图片转载至幕课)



在昨天的myblog\blog下简历templates文件夹


结构树


myblog

|

|-----blog

|    |

|    |-----templates

|    |    |

|    |    |-----index.html


python 3.5 django 笔记(二)Tmeplates与models_第2张图片



index的body内写入一行,证明他是亲生的

 hello blog web1



编辑:blog目录下的views.py

目的:指明django读取templates目录下的index.html文件

from django.shortcuts import render
#默认就有


def index(request):
 
    return render(request,'blog/index.html')
    #反馈index.html的内容
    #为啥不用加templates的内容呢?
    #因为在settings.py里面有这么行参数
    
    
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]


#django默认会指明templates为网页存放文件夹


python 3.5 django 笔记(二)Tmeplates与models_第3张图片


嘿嘿~~这不就出来了嘛


j_0042.gifj_0042.gifj_0042.gif




建立DTL内容:

  DTL是什么鬼?

  理解的是,如果在网页需要传递小参数,直接是用DTL,传递字典。




使用两个小方法后,即可完成


1、

修改blog下的views.py


def index(request):

    #return render(request,'blog/index.html',{'传递的字典名':'对应的内容'})
    return render(request, 'blog/index.html', {'dtlname': '我们都很帅'})


2、

去index的body内添加一句

{{ dtlname }}



    

{{ dtlname }}

    

 hello blog web1 !!!


就完成dtl的快速配置了


j_0061.gifj_0061.gifj_0061.gifj_0061.gif





·双站点的templates




目录结构


myblog

├─blog

│  │

│  ├─templates

│  │  └─blog

│  │     └─index.html

├─blog2

│  ├─templates

│  │  └─blog2

│  │     └─index.html



  • blog1-templates配置

index的body内写入一行,证明他是亲生的

 hello blog web1

编辑:blog目录下的views.py

from django.shortcuts import render
#默认就有

def index(request):

    return render(request,'blog/index.html')



  • blog2-templates配置

index的body内写入一行,证明他是亲生的

 hello blog web2

编辑:blog目录下的views.py

from django.shortcuts import render
#默认就有

def index(request):

    return render(request,'blog2/index.html')



----------------------------------------------------

j_0040.gifj_0040.gifj_0040.gifj_0040.gifj_0040.gifj_0040.gif


使用

127.0.0.1:8000/blog/index.html

127.0.0.1:8000/blog2/index.html

各自可以访问自行目录,注意:如果在templates下没有单独建立对应文件夹是默认会访问blog目录下的index.html











Models(魔豆)





python 3.5 django 笔记(二)Tmeplates与models_第4张图片


理解是:

  Django把与数据库交互的语句,封装起来,用jango的语言来访问数据内容。



python 3.5 django 笔记(二)Tmeplates与models_第5张图片




django在创建app时候已经有models.py这个文件

接下来,编辑blog下的models.py文件:(创建数据结构)

from django.db import models
#导入modles模块
# Create your models here.

class Article(models.Model):
#创建一个类
    title = models.CharField(max_length=32, default='Title')
    #设置数据库的title表 ,最大长度32位,默认字段为Title
    content = models.TextField(null=True)
    #content赋值为内容,允许为空



有数据结构后,把刚刚创建的标题和内容生产数据表

python 3.5 django 笔记(二)Tmeplates与models_第6张图片

cmd: 进入myblog目录

执行 python manage.py makemigrations app名(可选)

默认执行django项目下所有app站点

#该命令是把指定项目加入到预备队列

再执行python manage.py migrate

#开始运行操作


python 3.5 django 笔记(二)Tmeplates与models_第7张图片



j_0013.gif



昨天创建的两个blog blog项目,都出现了migrations这个文件夹

打开里面00001_initial.py

就可以看到刚刚所创建的数据类型,所以上一步等待那么久是有原因的


j_0013.gif

from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Article',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(default='Title', max_length=32)),
                ('content', models.TextField(null=True)),
            ],
        ),
    ]



有数据了,接下来,就是给刚刚创建的数据结构添加数据。

这里讲的是使用外部软件编辑,不是在django内。


这时候就需要大家下载SQLite Expert Personal

http://xiazai.xiazaiba.com/Soft/S/SQLiteExpertPersonal.exe?pcid=2771&filename=SQLiteExpertPersonal.exe&downloadtype=xiazaiba_seo


j_0042.gif


python 3.5 django 笔记(二)Tmeplates与models_第8张图片



这样就有数据了~~~~


第一步:

修改blog下的views.py

添加

article = models.Article.objects.get(pk=1)#主要添加这两句
from . import models
from django.shortcuts import render

from django.http import HttpResponse
from . import models
#导入刚刚的模块
def index(request):
    article = models.Article.objects.get(pk=1)
    #等于mysql的select id=1的语句
    return render(request,'blog/index.html',{'article':article})
    #打印title和内容



第二步:

修改indexl.html

    
    Title



    {{ article.title }}
    {{ article.content }}
     hello blog web1



执行服务:

进入myblog

执行 python manage.py runserver


又一次找到胜利的快感!

hello

helle sqlite

hello blog web1