热点汇总

你可以从教程开始也可以直接进入更详细的文档

31 12月 , 2019  

Django 1.9.6 官方文书档案 第二片段(中文翻译),django1.9.6

  注:近年来始发攻读Python的Django框架,为了督促学习,强迫自个儿翻译官方的文书档案,既是意气风发种学习,也是豆蔻梢头种储存!由于阅世不足,错误显著不菲,请大家多多指教!原创内容,转发请评释出处。

 

Django官方文书档案

其次片段:新手入门

(之所以从第二有的从前,是因为第风流潇洒局地是任何官方文书档案布局图和导引,有空小编会翻译出来补全。)

2.1 Django概述

  Django诞生于快节奏的音讯编辑室景况,它被规划成非常快、轻易的通用网址开垦工具。

  本文书档案的目标是令你拿走丰富的根底知识去驾驭Django是怎样行事的,它既是一本学科也能够用作参照他事他说加以考察资料。当您打算好起来贰个档案的次序,你能够从学科最早也足以直接步向更详细的文书档案。

2.1.1模型设计

  你能够在平素不数据库的处境下接受Django。

  数据模型语法提供多样方法表示您的模子。这里有三个轻松易行的演示:

mysite/news/models.py
from django.db import models

class Reporter(models.Model):
    full_name = models.CharField(max_length=70)

    def __str__(self):              # __unicode__ on Python 2
        return self.full_name

class 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):              # __unicode__ on Python 2
        return self.headline

2.1.2安装

  能够透过运转Django命令路程序自动地创立数量库表:

  $ Python manage.py migrate

2.1.3开放的API

         你可以选用大批量的绽放的Python
API访谈数据。那个API创设急速,无需生成额外的代码。下边是现身说法:

 

#从大家创造的”news”应用中程导弹入模块

>>> from news.models import Reporter, Article

 

# 权且还从未reporters在系统中

>>> Reporter.objects.all()

[]

 

#始建三个新的Reporter.

>>> r = Reporter(full_name=‘John Smith’)

 

#将对象存入数据库。你必需显式地调用save方法。

>>> r.save()

 

# 现在它有了ID。

>>> r.id

 

#新的reporter存在于数据库

>>> Reporter.objects.all()

[<Reporter: John Smith>]

 

#字段被视作Python对象的本性

>>> r.full_name

‘John Smith’

 

# Django 提供丰富的数据库查询API.

>>> 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.

 

# 创立二个article

>>> from datetime import date

>>> a = Article(pub_date=date.today(),
headline=‘Django is cool’,

content=‘Yeah.’, reporter=r)

>>> a.save()

 

# article存在于数据库

>>> Article.objects.all()

[<Article: Django is cool>]

 

>>> r = a.reporter

>>> r.full_name

‘John Smith’

 

>>> r.article_set.all()

[<Article: Django is cool>]

 

>>>
Article.objects.filter(reporter__full_name__startswith=‘John’)

[<Article: Django is cool>]

 

#因而改造对象的习性修正对象,记得调用save方法。

>>> r.full_name = ‘Billy Goat’

>>> r.save()

 

# 使用delete(卡塔尔国方法删除对象

>>> r.delete()

2.1.4 成效齐全的拘留分界面

  生机勃勃旦您的模子定义好了,Django会自动地开创叁个正规的现有的处理分界面。它实乃叁个web页面,让那么些被授权的客户能够扩大、改动和删除对象。

mysite/news/models.py


from django.db import models

class Article(models.Model):
    pub_date = models.DateField()
    headline = models.CharField(max_length=200)
    content = models.TextField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

mysite/news/admin.py


from django.contrib import admin

from . import models

admin.site.register(models.Article)

2.1.5规划你的 UMuranoLs

  二个根本、温婉的U奥迪Q5L方案是高水平WEB应用的严重性部分。Django鼓舞美貌的U昂CoraLs设计,不要把那一个令人讨厌的.php或.asp放进U奇骏L。

  为app设计UHavalLs实际上是成立叁个UEnclaveLconf的Python模块。它是您的app的目录表,它蕴含三个简便的在UTucsonL格局和Python回调函数之间的投射。UXC90Lconfs有匡助解耦UCR-VLs和Python代码。

  上面是二个U宝马7系Lconf的例证,它用来地点十分Reporter/Article轨范:

mysite/news/urls.py


from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^articles/([0-9]{4})/$', views.year_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
]

  下面的代码中,通过轻便的正则表明式将U库罗德Ls与实际的Python回调函数(views)联系起来。正则表达式通过括号从ULANDL中获取值。当客商央浼多个页面时,Django按顺序遍历每三个神工鬼斧格局,并在率先个格外的之处停下。(若无别的相称项,Django将重返404页面)。那么些进程万分快,因为正则表明式在加载时就能够被编写翻译。

  后生可畏旦得逞相配,Django将导入和调用给定的视图(view),五个轻巧的Python函数。每一个view传递一个央求对象,它含有了央求的元数据和正则表明式中捕获的值。比如,当客商乞求“/articles/二〇〇七/05/39323/”这些页面,Django将调用函数news.views.article_detail(request,
’2005’, ’05’, ’39323’)

2.1.6编辑视图

  每一种视图都起码再次来到叁个HttpResponse对象,它含有了被号令的页面包车型地铁从头到尾的经过,恐怕触发叁个非常,比方Http404。其他的功用则有您和谐说了算。

平凡,视图通过参数获取数据,并用它渲染加载的模版。上边是三个year_archive的视图例子:

mysite/news/views.py


from django.shortcuts import render

from .models import Article

def 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的模版系统,它有不菲有力的机能,并全作保持轻易易用的性状。

2.1.7设计你的模板

  上边的代码加载了news/year_archive.html模板。

  Django有叁个模板查找路线,它同意你减小模板冗余。在Django设置中,你可以创设模板的目录列表,Django就要列表中按顺序查找模板。

下面是news/year_archive.html模板的代码:

mysite/news/templates/news/year_archive.html


{% 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.headline
}}意思是输出article题目栏的值。圆点不但用于查找属性,也用于词典键值、索引的检索和函数调用。请在乎,在{{
article.pub_date|date:”F j, Y”
}}中利用了Unix系统风格的管道符号“|”。你能够连续不断其余个数的管道。你能够编写自定义的模版管道,能够编写制定自定义的模板标签,运维自定义的后端Python代码。

  最终,Django使用“模板继承”的定义,就好像{% extends “base.html”
%}所做相像。它的情致是先加载名称叫“base”的模板。这么些模板已经预订义了大气的块,并且那几个块中还嵌套了块。总体上看,那协理让您一大波的减少模板的数据,每一个模板只在意于它独步天下的有的。

  下面是“base.html”的代码。

mysite/templates/base.html


{% load staticfiles %}
<html>
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    <img src="{%%20static%20"images/sitelogo.png" %}" alt="Logo" />
    {% block content %}{% endblock %}
</body>
</html>

  它只是大器晚成味的定义了站点的主导“外观”,并提供子模板填充的“入口”。那让重新设计一个站点变得简单,你只要求改换底蕴模板这叁个文书。

  注意,你也得以利用别的模板系统,就算Django的模版系统和它的模子层整合得很好,但也还未强制你非用它不行。相通的,你亦不是非用Django的数据库API不可。你可以行使其他数据库抽象层,你能够读取XML文件,任何你想要的。Django的每三个零部件,比如模型、视图和模板都以松耦合的。

2.2高效安装向导

  在选用Django以前,我们亟须先安装它。光放有整机的装置向导,包含了装有十分的大希望的场景。

2.2.1安装Python

  作为一个基于Python的WEB框架,Django必要事情发生前安装Python。你能够从Python的官方网址或操作系统的软件管理器下载并设置新型版本的Python。其余,想了然哪些版本的Python扶持Django,请看文书档案《What
Python version can I use with
Django?》。Python内置二个名字为SQLite的轻量级数据库,所以您那时候还足以不设置数据库程序。尽管你使用的是Jython(Python的Java平台落成),你须要一些附加的手续。

  在shell中输入Python,要是显示如下新闻,注明已经打响安装Python:

Python 3.4.x

[GCC 4.x] on linux

Type “help”, “copyright”, “credits” or “license” for more information.

>>> 

2.2.2装置数据库

  尽管您想做事在“大型”的数据库引擎下,举个例子PostgreSQL, MySQL, 大概Oracle,请查看文书档案《database installation information》

2.2.3移除旧版本的Django

  在装置新本子的Django早先,你供给先卸载旧的本子。

2.2.4安装Django

  在设置Django时您有二种选取:

  •通过操作系统的软件管理工科具安装jango,这是最快的形式。

  •安装官方发行版。对比较多使用者来讲这是最棒的选项。

  •安装最新的开荒版。那适用于那个中意使用新型最全的功效,并且不忧郁代码风险的人。在付出版中,你有相当的大可能率遇见新的bug,请将它报告,帮忙Django的腾飞。

2.2.5验证

  在Python的shell情状中,import Django模块,如下所示:

  >>> import django

  >>> print(django.get_version())

  1.9

 

待续………

1.9.6 官方文档第二片段(中文翻译),django1.9.6
注:这段日子始发上学Python的Django框架,为了督促学习,逼迫自个儿翻译官方的文档,既是…


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图