Django入门(二)

这一节主要介绍django中的model,template模板。
model是django自带的orm框架,下面我们来搭建一个博客网站,来看看是如何使用的。

1.新建应用blog

python manage.py startapp blog

2.创建一个blog实体类
进入blog/models.py,添加代码如下:

from django.db import models

# Create your models here.
class Blog(models.Model):
    title = models.CharField(max_length=20)
    body = models.TextField()
    timestamp = models.DateTimeField()

实体对象继承自models.Model类,我们可以通过这个类访问数据库,而不需要写SQL语句了,
django自带了sqllite3数据库,可以再django_test/settings.py中看到。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

3.将应用加入配置文件
进入django_test/settings.py,找到INSTALLED_APPS,加入blog

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

加入后,Django就可以通过Blog对象建表了

4.django自动建表
在根目录执行以下命令,记录model的更新:

python manage.py makemigrations

然后输入以下命令,推送到数据库,完成更新

python manage.py migrate

5.创建数据库web控制台后台管理员,web控制台管理者我们的models

python manage.py createsuperuser

6.将Blog实体注册到管理员,让管理员能够访问到
打开blog/admin.py,加入以下代码:

from .models import Blog #从当前目录的models.py中导入Blog类

# Register your models here.
admin.site.register(Blog)

这样在后台就可以访问到Blog了

7.启动服务

python manage.py runserver

8.访问models控制台
浏览器输入: 127.0.0.1:8000/admin
运行结果:

9.在blog/文件夹下面新建一个目录,叫templates,存放html文件
文件目录如下:

10.新建网页,展示blog列表
在blog/templates目录下新建一个bog_list.html模板文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>My Blog</title>
</head>
<body>
    {% for blog in blog_list %}
        <div>
            <h1>{{ blog.title }}</h1>
            <p>{{ blog.body }}</p>
            <span>{{ blog.timestamp }}</span>
        </div>
    {% endfor %}
</body>
</html>

以上的网页在django中称作模板,可以再里面写很多动态元素,由django渲染后生成html

11.在views.py中取出Blog对象,交给上面的html
打开blog/views.py,加入代码如下:

from django.shortcuts import render
from .models import Blog
# Create your views here.

def blog_list(request):
    blog_list = Blog.objects.all()
    return render(request, 'blog_list.html', {'blog_list': blog_list})

render的第一个参数是request,第二个是html模板,第三个是字典,也就是我们要传给html的参数

12.配置到urls.py

from django.conf.urls import url, include
from django.contrib import admin
from blog.views import blog_list

urlpatterns = [
    url(r'^polls/', include('polls.urls')),
    url(r'^admin/', admin.site.urls),
    url(r'^blog/', blog_list),
]

13.启动服务进行访问
运行结果:

14.总结
1)新建一个app,要在settings.py中进行注册
2)实体模型写在models.py中,一个实体类对应了数据库的一张表
3)在views.py中我们可以通过实体类对数据库进行访问,不需要写SQL语句
4)views.py获取的对象可以通过字典的形式传到template中,然后通过模板语言进行访问,动态生成html
5)通过配置urls.py,将url和方法绑定起来

原文地址:https://www.cnblogs.com/shijingjing07/p/9050906.html