Django2.0官方文档--概览
Django概览
设计你的模型(models)
mysite/news/models.py
from django.db import modelsclass Reporter(models.Model):full_name = models.CharField(max_length=70)def __str__(self):return self.full_nameclass Article(models.Model):pub_date = models.DateField()headline = models.CharField(max_length=200)content = models.TextField()reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)def __str__(self):return self.headline
安装它
$ python manage.py migrate
migrate命令将会查看你都所有可用的模型,并在数据库中为那些没有表格的模型创建表格,同时提供你更丰富的模型控制(much richer schema control)。
享受这些不受约束的API
#导入我们给“nwes”APP创建的模型
>>> from news.models import Reporter, Article
#这时,系统中还没有“记者”
>>> Reporter.objects.all() <QuerySet []>
#创建一个新的“记者”
>>> r = Reporter(full_name='John Smith')
#要想将对象存入数据库中,你必须明确调用'save()'
>>> r.save()
#给他一个ID
>>> r.id 1
#现在,这个新的“记者”已经在你的数据库中了
>>> Reporter.objects.all() <QuerySet [<Reporter: John Smith>]>
#名字字段在Python对象中表示为一个属性
>>> r.full_name 'John Smith'
#Django提供了丰富的数据库查看接口
>>> Reporter.objects.get(id=1) <Reporter: John Smith> >>> Reporter.objects.get(full_name__startswith='John') <Reporter: John Smith> >>> Reporter.objects.get(full_name__contains='mith') <Reporter: John Smith> >>> Reporter.objects.get(id=2) Traceback (most recent call last):... DoesNotExist: Reporter matching query does not exist.
#新建一篇“文章”
>>> from datetime import date >>> a = Article(pub_date=date.today(), headline='Django is cool', ... content='Yeah.', reporter=r) >>> a.save()
#现在“文章”已经存入数据库了
>>> Article.objects.all() <QuerySet [<Article: Django is cool>]
#“文章”对象可以通过接口查看“记者”对象
>>> r = a.reporter >>> r.full_name 'John Smith'
#反过来同样,可以通过“记者”对象查看“文章对象”
>>> r.article_set.all() <QuerySet [<Article: Django is cool>]
#API接口可以根据需要按照关系高效率地执行#JOINs for you behind the scens(这句实在不会翻译了。。。)#如下将会返回所有以“John”为名字开头的对象的文章
>>> Article.objects.filter(reporter__full_name__startswith='John') <QuerySet [<Article: Django is cool>]>
#通过改变属性来更改对象,同时调用save()来保存
>>> r.full_name = 'Billy Goat' >>> r.save()
#通过调用delete()来删除一个对象
>>> r.delete()
动态管理界面:这不仅仅是一个框架,这是整座屋子
mysite/news/models.py
from django.db import modelsclass Article(models.Model):pub_date = models.DateField()headline = models.CharField(max_length=200)content = models.TextField()reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
from django.contrib import adminfrom . import modelsadmin.site.register(models.Article)
设计网址(URL)
from django.urls import pathfrom . import viewsurlpatterns = [path('articles/<int:year>/', views.year_archive),path('articles/<int:year>/<int:month>/', views.month_archive),path('articles/<int:year>/<int:month>/<int:pk>/', views.article_detail), ]
上面的代码将URL路径设置到Python回到函数("views")。路径字符串用参数值标签来获取URL中的值。当一个用户请求一个页面时,Django一次遍历每个路径,并在第一个匹配URL的地方停下。(如果没有匹配的URL,Django将会调用404视图=。=)路径加载时会被编译成正则表达式,所以这个过程就跟开火箭似的。
编写你的视图(views)
mysite/news/views.py
from django.shortcuts import renderfrom .models import Articledef year_archive(request, year):a_list = Article.objects.filter(pub_date__year=year)context = {'year': year, 'article_list': a_list}return render(request, 'news/year_archive.html', context)
这个示例用到了Django的模板系统(template system),这个系统有多个强大的功能,同时它也在努力做到让不是码农的人也能用他。
设计你的模板(templates)
{% extends "base.html" %}{% block title %}Articles for {{ year }}{% endblock %}{% block content %} <h1>Articles for {{ year }}</h1>{% for article in article_list %}<p>{{ article.headline }}</p><p>By {{ article.reporter.full_name }}</p><p>Published {{ article.pub_date|date:"F j, Y" }}</p> {% endfor %} {% endblock %}
{{ article.pub_date|date:"F j, Y" }}
用了Unix风格的“通道”(“|”字符)。这叫模板过滤器,它可以用来过滤变量值。在这个示例中,日期过滤器以给定的格式来格式化Python日期时间对象(如同PHP的日期函数)。
{% load static %} <html> <head><title>{% block title %}{% endblock %}</title> </head> <body><img src="{% static "images/sitelogo.png" %}" alt="Logo" />{% block content %}{% endblock %} </body> </html>
这些只是冰山一角
- 与mecached或其他后端集成的缓存框架(caching framework)。
- 一个让创建RSS、Atom和编写Python类一样简单的联合框架(syndication framework)
- 更生动的自动生成管理功能,上边这个概述只是提到了一些表面功能。
接下来,你可以去下载Django,阅读教程(the tutorial),或者加入社区。
感谢你的支持!
Django2.0官方文档--概览相关推荐
- Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(上)
Hyperledger Fabric 2.0 官方文档中文版第6章 教程上 总目录 6.教程(上) 将智能合约部署到通道 启动网络 Logspout设置 打包智能合约 安装链码包 批准链码定义 将链码 ...
- SWFObject 2.0官方文档
SWFObject 2.0官方文档 2008年4月24日 翻译:farthinker 主要内容: 1 . 什么是SWFObject 2.0? 2 . 为什么你应该使用SWFObject 2.0? 3 ...
- Hyperledger Fabric 2.0 官方文档中文版 第6章 教程(下)
Hyperledger Fabric 2.0 官方文档中文版 第6章 教程下 总目录 6.教程(下) 使用CouchDB 为什么使用CouchDB? 在Hyperledger Fabric中启用Cou ...
- Hyperledger Fabric 2.0 官方文档中文版 第3章 关键概念
Hyperledger Fabric 2.0 官方文档中文版 第3章 关键概念 总目录 3.关键概念 引言 什么是区块链? 区块链为什么有用? 什么是Hyperledger Fabric? Hyper ...
- Hyperledger Fabric 2.0 官方文档中文版 第5章 开发应用程序
Hyperledger Fabric 2.0 官方文档中文版 第5章 开发应用程序 总目录 5.开发应用程序 情景 PaperNet网络 介绍参与者 分析 商业票据生命周期 交易 账本 过程和数据设计 ...
- CUDA10.0官方文档的翻译与学习之编程接口
目录 背景 用nvcc编译 编译工作流 二进制适配性 ptx适配性 应用适配性 C/C++适配性 64位适配性 cuda c运行时 初始化 设备内存 共享内存 页锁主机内存 可移植内存 写合并内存 映 ...
- Hyperledger Fabric 2.0 官方文档中文版 第1章 引言
Hyperledger Fabric 2.0 官方文档中文版 第1章 引言 总目录 1.引言 Hyperledger Fabric 模块化 许可区块链与无许可区块链 智能合约 新途径 隐私和保密 可插 ...
- Spring Boot 2.0官方文档之 Actuator
https://blog.csdn.net/alinyua/article/details/80009435 前言:本文翻译自Spring Boot 2.0.1.RELEASE官方文档,该Spring ...
- vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍
这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...
最新文章
- POJ1386 Play on Words
- cpc卡内计费信息异常包括_抖音信息流落地页直达广告怎么做?
- 谷歌开源框架 FUSS,让声音分离不再成为难题
- 学会python之后-【一点资讯】学会Python后,人生简直开挂了!
- DzzOffice1.0 Beta2发布
- Android之ProgressBar读取文件进度解析
- ElementUI中el-upload传递额外参数为date类型时后台SpringBoot接收不到
- 设计模式——工厂模式(一)
- Eric Brewer大神
- 千呼万唤始出来,OpenCV 4.0正式发布!
- AS3的一些压缩解压缩类库(AS3 ZIP、AS3 GZIP等等)
- python反转一个三位数_反转Python整数的位
- Excel 2013 基础视频教程上线了
- 任意图像转素描:Python分分钟实现
- 从0基础学习Python(17)[面向对象三大特征[多态]]
- AtoZ CSS快速提示:对文本使用OpenType
- 源代码管理工具——VSS详解
- Postfix邮箱部署
- (Note)夜光藻赤潮
- 8:操作模式1-boot mode
热门文章
- linux下流量监控统计软件,Linux服务器网卡流量统计监控软件vnStat
- 模型转换、模型压缩、模型加速工具汇总
- 【数字IC快速入门】linux基本操作
- 易语言获取指定文本模块封装源码
- 在Ubuntu 9.10中DIY谷歌Chrome OS
- 企业服务器采用虚拟化技术的利弊
- 【Unity技术积累】实现鼠标画线功能 LineRenderer
- android huawei ale-tl00 不显示log,华为手机ALE_TL00为什么插卡不显示
- PyQt5快速入门教程3-QtDesigner设计第一个界面
- 计算机语言安装不上,安装程序包的语言不受系统支持,详细教您如何解决Office2010安装时语言不受系统支持...