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. ...
最新文章
- python的沙盒环境virtualenv(二)--简单使用
- SuperMap iDesktop Cross 8C 开源桌面GIS下载与扩展开发
- 用户计算机通过连入局域网上网时,重庆市职称计算机考试理论题库05
- 每天学习python 30分钟 -了解python - 看懂#!/usr/bin/python
- 牛客 - Pass Through With One Breath(中位数)
- php中文删除乱码部分,PHP中文乱码解决办法
- oracle数据库中的一些操作
- Android趣味课程:九宫格拼图游戏
- Nodejs 中文分词
- ice php 5.6.32,PHP通过ice调用python程序
- package crypto/rand: unrecognized import path crypto/rand (import path does not begin with hostnam
- php如何采集,php采集入门教程,教你如何写采集
- 0基础学绘画怎么临摹
- 抓包工具有哪些你知道吗?今天给你们介绍四款最受欢迎的抓包神器
- 提高网吧上座率,TG-NET网吧光纤万兆方案
- nrf52在未配对的情况下使用白名单广播,指定安卓手机允许连接
- JS实现字符串模糊匹配
- c语言stdoux串口流,嵌入式C语言代码优化的一些经验
- 厦门大学的【软件工程专业】被撤销!
- LeetCode 1278. 分割回文串 III
热门文章
- 苹果iOS被曝安全漏洞:一条短信可让手机死机
- 银河麒麟/Ubuntu安装cuda和显卡驱动、cuDNN
- 推荐通用图模型工具包pymc
- python基础教程:教你如何自学python入门到精通
- python 3爬取 全国高校对四川历年招生数据(文理省控线,文理专业线)存入Excel表(重构)
- 小猪o2o源码v14.17双系统版(生活通+营销系统)怎么配置微信支付和支付宝支付
- HTML禁止复制粘贴以及禁止下载图片的小技巧
- 【word】空白页空白行删除不了,按delete
- Spring整合FreeMarker本地化动态设置
- “指定的网络名不再可用的”新解决案例