国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

django官方文檔1.11編翻:1-1-1概述

阿羅 / 2505人閱讀

摘要:您的應(yīng)用程序的目錄,它包含模式和回調(diào)函數(shù)之間的簡(jiǎn)單映射。更性感自動(dòng)生成的管理功能這個(gè)概述幾乎沒(méi)有觸及表面。

django概述

因?yàn)閐jango是在快節(jié)奏的編輯環(huán)境下開(kāi)發(fā)的,它旨在使常見(jiàn)的Web開(kāi)發(fā)任務(wù)變得快速而簡(jiǎn)單。 這是一個(gè)關(guān)于如何用django編寫(xiě)數(shù)據(jù)庫(kù)驅(qū)動(dòng)的Web應(yīng)用程序的非正式概述。

本文檔的目的是為您提供足夠的技術(shù)細(xì)節(jié)來(lái)了解django的工作原理,但這不是一個(gè)教程或參考 - 但是我們已經(jīng)有了! 當(dāng)您準(zhǔn)備開(kāi)始一個(gè)項(xiàng)目時(shí),您可以從教程開(kāi)始,或者直接進(jìn)入更詳細(xì)的文檔。

設(shè)計(jì)你的模型

盡管您可以在沒(méi)有數(shù)據(jù)庫(kù)的情況下使用django,但它附帶一個(gè)對(duì)象關(guān)系映射器,您可以在其中以python代碼描述數(shù)據(jù)庫(kù)布局。

數(shù)據(jù)模型語(yǔ)法提供了許多豐富的代表模型的方法 - 到目前為止,它一直在解決多年的數(shù)據(jù)庫(kù)模式問(wèn)題。 這是一個(gè)快速的例子:

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 即為在python2的語(yǔ)法中此處應(yīng)該為def __unicode__(self):
        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
安裝它

接下來(lái),運(yùn)行django命令行實(shí)用程序自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)表:

$ python manage.py migrate

其實(shí)在高版本的django中創(chuàng)建數(shù)據(jù)庫(kù)表的完整步驟應(yīng)該是,首先在命令窗口進(jìn)入到項(xiàng)目文件的目錄下有manage.py的那一層,先后運(yùn)行:

python manage.py makemigrations    # 生成數(shù)據(jù)庫(kù)遷移文件
python manage.py migrate           # 創(chuàng)建數(shù)據(jù)庫(kù)表

migrate命令查看所有可用的模型,并在數(shù)據(jù)庫(kù)中創(chuàng)建不存在的表以及可選地提供更豐富的模式控制的表。

享受免費(fèi)的API

因此,您有一個(gè)免費(fèi)且豐富的Python API來(lái)訪問(wèn)您的數(shù)據(jù)。 API是即時(shí)創(chuàng)建的,不需要代碼生成:

# Import the models we created from our "news" app
>>> from news.models import Reporter, Article

# No reporters are in the system yet.
>>> Reporter.objects.all()


# Create a new Reporter.
>>> r = Reporter(full_name="John Smith")

# Save the object into the database. You have to call save() explicitly.
>>> r.save()

# Now it has an ID.
>>> r.id
1

# Now the new reporter is in the database.
>>> Reporter.objects.all()
]>

# Fields are represented as attributes on the Python object.
>>> r.full_name
"John Smith"

# Django provides a rich database lookup API.
>>> Reporter.objects.get(id=1)

>>> Reporter.objects.get(full_name__startswith="John")

>>> Reporter.objects.get(full_name__contains="mith")

>>> Reporter.objects.get(id=2)
Traceback (most recent call last):
    ...
DoesNotExist: Reporter matching query does not exist.

# Create an article.
>>> from datetime import date
>>> a = Article(pub_date=date.today(), headline="Django is cool",
...     content="Yeah.", reporter=r)
>>> a.save()

# Now the article is in the database.
>>> Article.objects.all()
]>

# Article objects get API access to related Reporter objects.
>>> r = a.reporter
>>> r.full_name
"John Smith"

# And vice versa: Reporter objects get API access to Article objects.  外鍵反向查詢
>>> r.article_set.all()
]>

# The API follows relationships as far as you need, performing efficient
# JOINs for you behind the scenes.
# This finds all articles by a reporter whose name starts with "John".
>>> Article.objects.filter(reporter__full_name__startswith="John")
]>

# Change an object by altering its attributes and calling save().
>>> r.full_name = "Billy Goat"
>>> r.save()

# Delete an object with delete().
>>> r.delete()
一個(gè)動(dòng)態(tài)的管理界面:它不只是腳手架 - 它是整個(gè)房子

一旦您的模型被定義,Django可以自動(dòng)創(chuàng)建一個(gè)專業(yè)的,生產(chǎn)就緒的管理界面 - 允許經(jīng)過(guò)身份驗(yàn)證的用戶添加,更改和刪除對(duì)象的網(wǎng)站。 在管理員網(wǎng)站上注冊(cè)您的模型非常簡(jiǎn)單:

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)

這里的理念是,您的網(wǎng)站由員工或客戶端編輯,也可能僅僅是您編輯 - 而您不需要處理創(chuàng)建后端接口來(lái)管理內(nèi)容。

創(chuàng)建django應(yīng)用程序的一個(gè)典型工作流程是創(chuàng)建模型并盡可能快地讓管理站點(diǎn)運(yùn)行起來(lái),因此您的員工(或客戶端)可以開(kāi)始填充數(shù)據(jù)。 然后,開(kāi)發(fā)數(shù)據(jù)呈現(xiàn)給公眾的方式。

設(shè)計(jì)您的網(wǎng)址

一個(gè)干凈,優(yōu)雅的URL方案是高質(zhì)量Web應(yīng)用程序中的重要細(xì)節(jié)。 django鼓勵(lì)漂亮的網(wǎng)址設(shè)計(jì),并不會(huì)在URL中放置其他的東西,比如 .php.asp

要設(shè)計(jì)應(yīng)用程序的URL,您可以創(chuàng)建一個(gè)名為URLconf的python模塊。 您的應(yīng)用程序的目錄,它包含URL模式和python回調(diào)函數(shù)之間的簡(jiǎn)單映射。 URLconfs還用于將URL與python代碼分離。

以下是關(guān)于上面的 Reporter/Article 示例中的URLconf的內(nèi)容:

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),
]

上面的代碼將URL作為簡(jiǎn)單的正則表達(dá)式映射到python回調(diào)函數(shù)("views")的位置。 正則表達(dá)式使用括號(hào)來(lái)從URL"捕獲"值。 當(dāng)用戶請(qǐng)求頁(yè)面時(shí),django按順序運(yùn)行每個(gè)模式,并在與所請(qǐng)求的URL匹配的第一個(gè)模式下停止。(如果沒(méi)有匹配,Django會(huì)調(diào)用特殊情況的404視圖。)這是非常快的,因?yàn)檎齽t表達(dá)式是在加載時(shí)編譯的。

一旦正則表達(dá)式匹配,django會(huì)調(diào)用給定的視圖,這是一個(gè)python函數(shù)。每個(gè)視圖都會(huì)傳遞一個(gè)請(qǐng)求對(duì)象(包含請(qǐng)求元數(shù)據(jù))以及在正則表達(dá)式中捕獲的值。

例如,如果用戶請(qǐng)求URL "/articles/2005/05/39323/",django將調(diào)用函數(shù)
news.views.article_detail(request, "2005", "05", "39323")

編寫(xiě)你的視圖

每個(gè)視圖都負(fù)責(zé)執(zhí)行以下兩項(xiàng)操作之一:返回包含所請(qǐng)求頁(yè)面內(nèi)容的HttpResponse對(duì)象,或引發(fā)異常(如Http404)。其余的取決于你。

通常,視圖根據(jù)參數(shù)檢索數(shù)據(jù),加載模板并使用檢索到的數(shù)據(jù)呈現(xiàn)模板。以下是上述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的模板系統(tǒng),它具有幾個(gè)強(qiáng)大的功能,但努力保持足夠簡(jiǎn)單以便非程序員使用。

設(shè)計(jì)你的模板

上面的代碼加載了 news/year_archive.html 模板。

django具有模板搜索路徑,可以最大程度地減少模板之間的冗余。在django設(shè)置中,您可以指定使用DIRS檢查模板的目錄列表。如果第一個(gè)目錄中不存在模板,則會(huì)檢查第二個(gè)目錄,依此類推。

假設(shè)發(fā)現(xiàn) news/year_archive.html 模板。這可能是這樣的:

mysite/news/templates/news/year_archive.html

{% extends "base.html" %}

{% block title %}Articles for {{ year }}{% endblock %}

{% block content %}

Articles for {{ year }}

{% for article in article_list %}

{{ article.headline }}

By {{ article.reporter.full_name }}

Published {{ article.pub_date|date:"F j, Y" }}

{% endfor %} {% endblock %}

變量被雙花括號(hào)包圍。 {{article.headline}} 表示"輸出文章headline屬性的值",但是點(diǎn)不僅僅用于屬性查找。他們還可以進(jìn)行字典鍵查找,索引查找和函數(shù)調(diào)用。

注意 {{article.pub_date | date:"F j,Y"}} 使用Unix風(fēng)格的"pipe"("|"字符)。這被稱為模板過(guò)濾器,它是一種過(guò)濾變量值的方法。在這種情況下,日期過(guò)濾器會(huì)以給定的格式(同樣可以在PHP的日期函數(shù)中找到)格式化python datetime對(duì)象。

您可以將所需的過(guò)濾器鏈接在一起。您可以編寫(xiě)自定義模板過(guò)濾器。您可以編寫(xiě)自定義模板標(biāo)簽,該標(biāo)簽在幕后運(yùn)行自定義的python代碼。

最后,django使用"模板繼承"的概念。這就是 {% extends "base.html" %} 。這意味著"首先加載名為"base"的模板,它定義了一堆塊,并使用以下塊填充塊。"簡(jiǎn)而言之,這樣可以大大減少模板中的冗余:每個(gè)模板只能定義該模板有什么獨(dú)特之處。

以下是"base.html"模板,包括使用靜態(tài)文件,可能如下所示:

mysite/templates/base.html

{% load static %}


    {% block title %}{% endblock %}


    
    {% block content %}{% endblock %}


簡(jiǎn)單來(lái)說(shuō),它定義了網(wǎng)站的外觀(與網(wǎng)站的徽標(biāo)),并為子模板填充提供了"洞"。 這使得站點(diǎn)重新設(shè)計(jì)與更改單個(gè)文件(基本模板)一樣簡(jiǎn)單。

它還允許您創(chuàng)建多個(gè)版本的站點(diǎn),具有不同的基本模板,同時(shí)重用子模板。django的創(chuàng)作者已經(jīng)使用這種技術(shù)來(lái)創(chuàng)建驚人的不同的移動(dòng)版本的網(wǎng)站 - 只需創(chuàng)建一個(gè)新的基本模板。

請(qǐng)注意,如果您喜歡其他系統(tǒng),則不必使用django的模板系統(tǒng)。雖然django的模板系統(tǒng)與django的模型層特別完美地結(jié)合在一起,但是沒(méi)有什么會(huì)強(qiáng)制你使用它。為此,您不必使用django的數(shù)據(jù)庫(kù)API。您可以使用另一個(gè)數(shù)據(jù)庫(kù)抽象層,您可以讀取XML文件,您可以從磁盤讀取文件,或任何您想要的內(nèi)容。每個(gè)django - 模型,視圖,模板 - 與下一個(gè)分離。

這只是表面

這只是Django功能的簡(jiǎn)要概述。 一些更有用的功能:

與memcached或其他后端集成的緩存框架。
一個(gè)聯(lián)合框架,使得創(chuàng)建RSS和Atom feed與編寫(xiě)一個(gè)小python類一樣簡(jiǎn)單。
更性感自動(dòng)生成的管理功能 - 這個(gè)概述幾乎沒(méi)有觸及表面。
下一個(gè)明顯的步驟是為您下載django,閱讀教程并加入社區(qū)。 感謝您的關(guān)注!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/40995.html

相關(guān)文章

  • django官方文檔1.11編翻:首頁(yè)

    摘要:源網(wǎng)頁(yè)說(shuō)明文檔所有關(guān)于你應(yīng)該且必須知道的。性能和優(yōu)化概述的兼容性旨在兼容多種不同版本的支持的兼容性地理框架打算成為世界級(jí)的地理框架。其目標(biāo)是盡可能簡(jiǎn)單地構(gòu)建應(yīng)用程序并利用空間使能數(shù)據(jù)的功能。 源網(wǎng)頁(yè):https://docs.djangoproject.co... django說(shuō)明文檔 所有關(guān)于django你應(yīng)該且必須知道的。 第一步 你是否django編程新手,那就從此開(kāi)始!從零開(kāi)始...

    Michael_Lin 評(píng)論0 收藏0
  • django官方文檔1.11編翻1-1-2安裝

    摘要:快速安裝指南在你使用之前,你需要安裝它。安裝作為一個(gè)框架,需要。這對(duì)于大多數(shù)用戶來(lái)說(shuō)是最好的方法。安裝操作系統(tǒng)發(fā)行版提供的版本。安裝最新的開(kāi)發(fā)版本。那些僅在的開(kāi)發(fā)版本中可用的短語(yǔ)標(biāo)記功能,并且它們可能不適用于正式版本。 快速安裝指南 在你使用Django之前,你需要安裝它。 我們有一個(gè)完整的安裝指南,涵蓋所有的可能性; 本指南將引導(dǎo)您進(jìn)行一個(gè)簡(jiǎn)單的,最小化的安裝,這將在您通讀介紹時(shí)起作...

    LiangJ 評(píng)論0 收藏0
  • Django 管理現(xiàn)有數(shù)據(jù)庫(kù)

    摘要:默認(rèn)對(duì)此沒(méi)有很好的支持?jǐn)?shù)據(jù)庫(kù)結(jié)構(gòu)是由另一個(gè)工具管理的,并沒(méi)有直接修改數(shù)據(jù)庫(kù)結(jié)構(gòu)的權(quán)限。第二個(gè)思路是利用的多數(shù)據(jù)庫(kù)支持。由于使用后臺(tái)的用戶基本上只有公司內(nèi)部的業(yè)務(wù)人員,數(shù)據(jù)量不會(huì)大,用服務(wù)器級(jí)的數(shù)據(jù)庫(kù)有牛刀之嫌。 在多數(shù)項(xiàng)目中,總有一些幾乎一成不變的 CRUD 操作,編寫(xiě)這些代碼很無(wú)聊,但又是整個(gè)系統(tǒng)必不可少的功能之一。我們?cè)谏弦粋€(gè)項(xiàng)目中也面臨類似的問(wèn)題,雖然已經(jīng)實(shí)現(xiàn)了一個(gè)功能相對(duì)完整的...

    王笑朝 評(píng)論0 收藏0
  • Django 管理現(xiàn)有數(shù)據(jù)庫(kù)

    摘要:默認(rèn)對(duì)此沒(méi)有很好的支持?jǐn)?shù)據(jù)庫(kù)結(jié)構(gòu)是由另一個(gè)工具管理的,并沒(méi)有直接修改數(shù)據(jù)庫(kù)結(jié)構(gòu)的權(quán)限。第二個(gè)思路是利用的多數(shù)據(jù)庫(kù)支持。由于使用后臺(tái)的用戶基本上只有公司內(nèi)部的業(yè)務(wù)人員,數(shù)據(jù)量不會(huì)大,用服務(wù)器級(jí)的數(shù)據(jù)庫(kù)有牛刀之嫌。 在多數(shù)項(xiàng)目中,總有一些幾乎一成不變的 CRUD 操作,編寫(xiě)這些代碼很無(wú)聊,但又是整個(gè)系統(tǒng)必不可少的功能之一。我們?cè)谏弦粋€(gè)項(xiàng)目中也面臨類似的問(wèn)題,雖然已經(jīng)實(shí)現(xiàn)了一個(gè)功能相對(duì)完整的...

    Donald 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<