这一节主要介绍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和方法绑定起来

Django入门(二)的更多相关文章

  1. Django入门二之模板语法

    一. 模板变量 Context传入的可以是一个str,dict,list,甚至是一个实例对象 在html中如何调用这些对象进行取值呢 1. 变量名 {{ variable }} 返回字符串,无论是st ...

  2. python学习笔记--Django入门二 Django 的模板系统

    为了使网站更干净简洁更容易维护,页面的设计和Python的代码必须分离开.我们可以使用Django的 模板系统 (Template System)来实现这种模式. 几个简单的模板标签(tag):   ...

  3. Django入门实践(二)

    Django入门实践(二) Django模板简单实例 上篇中将html写在了views中,这种混合方式(指Template和views混在一起)不适合大型开发,而且代码不易管理和维护,下面就用Djan ...

  4. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  5. Django知识(二)

    上一部链接 django入门全套(第一部) 本章内容 Django model Model 基础配置 django默认支持sqlite,mysql, oracle,postgresql数据库. < ...

  6. Django 入门案例开发(上)

    Django 入门案例开发(中) http://www.cnblogs.com/focusBI/p/7858267.html Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供 ...

  7. 【Python全栈-后端开发】Django入门基础-2

    Django入门基础知识-2 一 .模版 一.模版的组成 HTML代码+逻辑控制代码 二.逻辑控制代码的组成 1  变量(使用双大括号来引用变量) {{var_name}} 2  标签(tag)的使用 ...

  8. Django 入门项目案例开发(上)

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. Django 入门案例开发(中) http://www.cnblogs.com/focusBI ...

  9. Django 入门案例开发

    Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供我们使用:这里不去描述 Django直接进入开发过程. Django入门案例分两部分:一.开发环境的配置:二.业务需求分析. ...

随机推荐

  1. ELK 实现 Java 分布式系统日志分析架构

    日志是分析线上问题的重要手段,通常我们会把日志输出到控制台或者本地文件中,排查问题时通过根据关键字搜索本地日志,但越来越多的公司,项目开发中采用分布式的架构,日志会记录到多个服务器或者文件中,分析问题 ...

  2. Android Intent之Action应用

    Log.i("txrjsms", "whereDoYouJumpFrom:"+getIntent().getPackage()); 结果是null Log.i( ...

  3. 最常用的Java库一览(13年的文章)

    来源于:http://www.importnew.com/7530.html 本文由 ImportNew - 邢 敏 翻译自 programcreek.欢迎加入翻译小组.转载请见文末要求. 写在前面: ...

  4. 使用 scp命令免登陆

    多台服务器之间互相拷贝文件一般常用scp命令但是让人困扰的是还要输入密码, 能不能不输入密码直接拷贝? 所幸方法是有的,ssh服务是支持免登陆的,不过需要密钥文件 方法如下: [root@WebSer ...

  5. POJ 1637 Sightseeing tour (SAP | Dinic 混合欧拉图的判断)

    Sightseeing tour Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 6448   Accepted: 2654 ...

  6. sqlserver学习笔记(三)—— 为数据库添加新的用户

    首先,用windows或sa身份登录sqlserver, 打开安全性——登录名——右键新建登录名:在选择页——常规中,新建命为user_b的登录名,选择sqlserver身份验证方式,设置密码确认密码 ...

  7. Win 7 IE11不能下载文件,右键另存为也不行

    在IE11中不能下载文件,右键另存为也无效. 发现 在IE11中点击“INTERNET选项”后,IE临时文件夹的地址没有显示,大小为0,修改只能让设置在8-8MB,注销再登录后,一切设置无效. 问题就 ...

  8. mongodb c++ driver 2.0编译使用

    安装boost1.48.0 在boost的官网下载boost1.48.0,链接例如以下: http://sourceforge.net/projects/boost/files/boost/1.48. ...

  9. 在C语言中除法运算为什么没有小数部分?

    原文链接: http://wenda.tianya.cn/question/4e096f010317a93d 除法运算符" / ",如果是两个整数相除结果为整数如果需要保留小数时 ...

  10. 实战Apache+Tomcat集群和负载均衡

    实战Apache+Tomcat集群和负载均衡 目录 1.    什么是J2EE集群... 3 1.1.     序言... 3 1.2.     基本术语... 3 伸缩性(Scalability): ...