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和方法绑定起来
Django入门(二)的更多相关文章
- Django入门二之模板语法
一. 模板变量 Context传入的可以是一个str,dict,list,甚至是一个实例对象 在html中如何调用这些对象进行取值呢 1. 变量名 {{ variable }} 返回字符串,无论是st ...
- python学习笔记--Django入门二 Django 的模板系统
为了使网站更干净简洁更容易维护,页面的设计和Python的代码必须分离开.我们可以使用Django的 模板系统 (Template System)来实现这种模式. 几个简单的模板标签(tag): ...
- Django入门实践(二)
Django入门实践(二) Django模板简单实例 上篇中将html写在了views中,这种混合方式(指Template和views混在一起)不适合大型开发,而且代码不易管理和维护,下面就用Djan ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- Django知识(二)
上一部链接 django入门全套(第一部) 本章内容 Django model Model 基础配置 django默认支持sqlite,mysql, oracle,postgresql数据库. < ...
- Django 入门案例开发(上)
Django 入门案例开发(中) http://www.cnblogs.com/focusBI/p/7858267.html Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供 ...
- 【Python全栈-后端开发】Django入门基础-2
Django入门基础知识-2 一 .模版 一.模版的组成 HTML代码+逻辑控制代码 二.逻辑控制代码的组成 1 变量(使用双大括号来引用变量) {{var_name}} 2 标签(tag)的使用 ...
- Django 入门项目案例开发(上)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. Django 入门案例开发(中) http://www.cnblogs.com/focusBI ...
- Django 入门案例开发
Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供我们使用:这里不去描述 Django直接进入开发过程. Django入门案例分两部分:一.开发环境的配置:二.业务需求分析. ...
随机推荐
- 转:场景管理--BSP
对于一个3D引擎来说,最核心的部分应该算是场景组织(scene graph)了,如果这部分你都没有设计好, 那么就别指望开发一个成熟的3D引擎了.为了开发3d引擎,所以我首先就研究这方面的内容,对一个 ...
- jquery版本号升级不兼容的问题:$("input").attr("value")功能发生改变
之前项目中使用的是jquery-1.6.3.js,在这个版本号中,假设我们想获取输入框的值,能够使用$("input").attr("value")或者是$(& ...
- 使用maven命令安装jar包到本地仓库
第三方jar包在开发工具中引入后编译没问题, 启动调试包括打包时会提示找不到jar包的错误.需要上传到maven仓库中,并在pom文件内引入. maven命令: 安装指定文件到本地仓库命令:mvn i ...
- python实现json转excel
import json import xlwt a = json.load(open("haha.json", encoding='utf8')) title = list(set ...
- RS:关于协同过滤,矩阵分解,LFM隐语义模型三者的区别
项亮老师在其所著的<推荐系统实战>中写道: 第2章 利用用户行为数据 2.2.2 用户活跃度和物品流行度的关系 [仅仅基于用户行为数据设计的推荐算法一般称为协同过滤算法.学术界对协同过滤算 ...
- java struts2入门学习实例--使用struts2快速实现上传
一.文件上传快速入门 1).关于上传表单三要素 >>尽量以POST请求方式上传,因为GET支持文件大小是有限制的. >>必须要加上enctype="multipart ...
- Spring使用内存数据库二
在上篇<Spring 使用内存数据库>中我们使用Hibernate作为ORM的框架,直接调用Hibernate的API进行相关的持久化操作,但在实际项目中,可能会由于公司规定等原因要求统一 ...
- TripleDES之C#和PHP之间加密解密
在C#常用加密解密一文中,介绍了几个加密解密方法,其中有个如何使用对称加密算法DES,此次说下DES的升级版,TripleDES. DES和TripleDES之间的关系可以参考下面的博文. 对称加密D ...
- 【struts2】Action的生命周期
Struts2的Action的生命周期是:Struts2为每个请求都重新初始化一个Action的实例.可以稍微改造一下代码来验证一下. 给HelloWorldAction加上一个public无参的构造 ...
- 12C的审计模式
1.Mixed Auditing Policy 混合审计模式支持新的审计引擎和老的审计引擎一起工作数据库升级后,已有的审计设置不会受到影响.但是官方建议迁移到统一审计模式.数据库创建后,默认是使用混合 ...