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

資訊專欄INFORMATION COLUMN

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

阿羅 / 2511人閱讀

摘要:您的應用程序的目錄,它包含模式和回調函數之間的簡單映射。更性感自動生成的管理功能這個概述幾乎沒有觸及表面。

django概述

因為django是在快節奏的編輯環境下開發的,它旨在使常見的Web開發任務變得快速而簡單。 這是一個關于如何用django編寫數據庫驅動的Web應用程序的非正式概述。

本文檔的目的是為您提供足夠的技術細節來了解django的工作原理,但這不是一個教程或參考 - 但是我們已經有了! 當您準備開始一個項目時,您可以從教程開始,或者直接進入更詳細的文檔。

設計你的模型

盡管您可以在沒有數據庫的情況下使用django,但它附帶一個對象關系映射器,您可以在其中以python代碼描述數據庫布局。

數據模型語法提供了許多豐富的代表模型的方法 - 到目前為止,它一直在解決多年的數據庫模式問題。 這是一個快速的例子:

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的語法中此處應該為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
安裝它

接下來,運行django命令行實用程序自動創建數據庫表:

$ python manage.py migrate

其實在高版本的django中創建數據庫表的完整步驟應該是,首先在命令窗口進入到項目文件的目錄下有manage.py的那一層,先后運行:

python manage.py makemigrations    # 生成數據庫遷移文件
python manage.py migrate           # 創建數據庫表

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

享受免費的API

因此,您有一個免費且豐富的Python API來訪問您的數據。 API是即時創建的,不需要代碼生成:

# 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()
一個動態的管理界面:它不只是腳手架 - 它是整個房子

一旦您的模型被定義,Django可以自動創建一個專業的,生產就緒的管理界面 - 允許經過身份驗證的用戶添加,更改和刪除對象的網站。 在管理員網站上注冊您的模型非常簡單:

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)

這里的理念是,您的網站由員工或客戶端編輯,也可能僅僅是您編輯 - 而您不需要處理創建后端接口來管理內容。

創建django應用程序的一個典型工作流程是創建模型并盡可能快地讓管理站點運行起來,因此您的員工(或客戶端)可以開始填充數據。 然后,開發數據呈現給公眾的方式。

設計您的網址

一個干凈,優雅的URL方案是高質量Web應用程序中的重要細節。 django鼓勵漂亮的網址設計,并不會在URL中放置其他的東西,比如 .php.asp

要設計應用程序的URL,您可以創建一個名為URLconf的python模塊。 您的應用程序的目錄,它包含URL模式和python回調函數之間的簡單映射。 URLconfs還用于將URL與python代碼分離。

以下是關于上面的 Reporter/Article 示例中的URLconf的內容:

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作為簡單的正則表達式映射到python回調函數("views")的位置。 正則表達式使用括號來從URL"捕獲"值。 當用戶請求頁面時,django按順序運行每個模式,并在與所請求的URL匹配的第一個模式下停止。(如果沒有匹配,Django會調用特殊情況的404視圖。)這是非常快的,因為正則表達式是在加載時編譯的。

一旦正則表達式匹配,django會調用給定的視圖,這是一個python函數。每個視圖都會傳遞一個請求對象(包含請求元數據)以及在正則表達式中捕獲的值。

例如,如果用戶請求URL "/articles/2005/05/39323/",django將調用函數
news.views.article_detail(request, "2005", "05", "39323")

編寫你的視圖

每個視圖都負責執行以下兩項操作之一:返回包含所請求頁面內容的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的模板系統,它具有幾個強大的功能,但努力保持足夠簡單以便非程序員使用。

設計你的模板

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

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

假設發現 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 %}

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

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

您可以將所需的過濾器鏈接在一起。您可以編寫自定義模板過濾器。您可以編寫自定義模板標簽,該標簽在幕后運行自定義的python代碼。

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

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

mysite/templates/base.html

{% load static %}


    {% block title %}{% endblock %}


    
    {% block content %}{% endblock %}


簡單來說,它定義了網站的外觀(與網站的徽標),并為子模板填充提供了"洞"。 這使得站點重新設計與更改單個文件(基本模板)一樣簡單。

它還允許您創建多個版本的站點,具有不同的基本模板,同時重用子模板。django的創作者已經使用這種技術來創建驚人的不同的移動版本的網站 - 只需創建一個新的基本模板。

請注意,如果您喜歡其他系統,則不必使用django的模板系統。雖然django的模板系統與django的模型層特別完美地結合在一起,但是沒有什么會強制你使用它。為此,您不必使用django的數據庫API。您可以使用另一個數據庫抽象層,您可以讀取XML文件,您可以從磁盤讀取文件,或任何您想要的內容。每個django - 模型,視圖,模板 - 與下一個分離。

這只是表面

這只是Django功能的簡要概述。 一些更有用的功能:

與memcached或其他后端集成的緩存框架。
一個聯合框架,使得創建RSS和Atom feed與編寫一個小python類一樣簡單。
更性感自動生成的管理功能 - 這個概述幾乎沒有觸及表面。
下一個明顯的步驟是為您下載django,閱讀教程并加入社區。 感謝您的關注!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/40995.html

相關文章

  • django官方文檔1.11編翻:首頁

    摘要:源網頁說明文檔所有關于你應該且必須知道的。性能和優化概述的兼容性旨在兼容多種不同版本的支持的兼容性地理框架打算成為世界級的地理框架。其目標是盡可能簡單地構建應用程序并利用空間使能數據的功能。 源網頁:https://docs.djangoproject.co... django說明文檔 所有關于django你應該且必須知道的。 第一步 你是否django編程新手,那就從此開始!從零開始...

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

    摘要:快速安裝指南在你使用之前,你需要安裝它。安裝作為一個框架,需要。這對于大多數用戶來說是最好的方法。安裝操作系統發行版提供的版本。安裝最新的開發版本。那些僅在的開發版本中可用的短語標記功能,并且它們可能不適用于正式版本。 快速安裝指南 在你使用Django之前,你需要安裝它。 我們有一個完整的安裝指南,涵蓋所有的可能性; 本指南將引導您進行一個簡單的,最小化的安裝,這將在您通讀介紹時起作...

    LiangJ 評論0 收藏0
  • Django 管理現有數據庫

    摘要:默認對此沒有很好的支持數據庫結構是由另一個工具管理的,并沒有直接修改數據庫結構的權限。第二個思路是利用的多數據庫支持。由于使用后臺的用戶基本上只有公司內部的業務人員,數據量不會大,用服務器級的數據庫有牛刀之嫌。 在多數項目中,總有一些幾乎一成不變的 CRUD 操作,編寫這些代碼很無聊,但又是整個系統必不可少的功能之一。我們在上一個項目中也面臨類似的問題,雖然已經實現了一個功能相對完整的...

    王笑朝 評論0 收藏0
  • Django 管理現有數據庫

    摘要:默認對此沒有很好的支持數據庫結構是由另一個工具管理的,并沒有直接修改數據庫結構的權限。第二個思路是利用的多數據庫支持。由于使用后臺的用戶基本上只有公司內部的業務人員,數據量不會大,用服務器級的數據庫有牛刀之嫌。 在多數項目中,總有一些幾乎一成不變的 CRUD 操作,編寫這些代碼很無聊,但又是整個系統必不可少的功能之一。我們在上一個項目中也面臨類似的問題,雖然已經實現了一個功能相對完整的...

    Donald 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<