日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

django官方文档1.11编翻:1-1-1概述

發布時間:2025/7/14 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django官方文档1.11编翻:1-1-1概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

django概述

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

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

設計你的模型

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

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

mysite/news/models.py

from django.db import modelsclass Reporter(models.Model):full_name = models.CharField(max_length=70)def __str__(self): # __unicode__ on Python 2 即為在python2的語法中此處應該為def __unicode__(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): # __unicode__ on Python 2return 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() <QuerySet []># 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() <QuerySet [<Reporter: John Smith>]># 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: 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.# 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() <QuerySet [<Article: Django is cool>]># 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() <QuerySet [<Article: Django is cool>]># 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') <QuerySet [<Article: Django is cool>]># 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 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)

mysite/news/admin.py

from django.contrib import adminfrom . import modelsadmin.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 urlfrom . import viewsurlpatterns = [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 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的模板系統,它具有幾個強大的功能,但努力保持足夠簡單以便非程序員使用。

設計你的模板

上面的代碼加載了 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 %} <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}} 表示"輸出文章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 %} <html> <head><title>{% block title %}{% endblock %}</title> </head> <body><img src="{% static "images/sitelogo.png" %}" alt="Logo" />{% block content %}{% endblock %} </body> </html>

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

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

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

這只是表面

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

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

總結

以上是生活随笔為你收集整理的django官方文档1.11编翻:1-1-1概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。