目錄
1.創(chuàng)建Django項目
?2.創(chuàng)建Django應(yīng)用
?3.定義ORM模型
4.創(chuàng)建并執(zhí)行數(shù)據(jù)庫遷移
5.定義視圖函數(shù)
6.定義URL路由
7.編寫模板
Django是一個基于Python的Web框架,它旨在提供開發(fā)人員一個高效而且富有靈活性的工具集。它包含了一套完整的組件,涵蓋了從路由、視圖、模板、表單到ORM等多個方面,能夠讓開發(fā)人員快速搭建一套高質(zhì)量的Web應(yīng)用。Django也是Python社區(qū)最主流的Web框架之一,許多知名網(wǎng)站如Instagram、Pinterest和Mozilla等都基于Django構(gòu)建。
在本篇文章中,我們將為大家介紹如何搭建一個簡單的Django應(yīng)用,并為您提供詳細的代碼示例。本文假設(shè)讀者已經(jīng)掌握了Python基礎(chǔ)及Web開發(fā)相關(guān)知識,并安裝了Django(本文中使用的版本為3.2.5)。
1.創(chuàng)建Django項目
首先,我們需要在本地創(chuàng)建一個新的Django項目。此處我們創(chuàng)建一個名為“myproject”的項目。
運行以下命令:
django-admin startproject myproject
創(chuàng)建好項目之后,我們會得到以下目錄結(jié)構(gòu):
myproject/
manage.py
myproject/
__init__.py
asgi.py
settings.py
urls.py
wsgi.py
其中:
- manage.py:Django項目的管理工具,通過它可以進行一些常用的操作,如啟動服務(wù)、創(chuàng)建數(shù)據(jù)庫等。
- myproject/:項目的主目錄,也是Python包的聲明。其中包含了一些基礎(chǔ)文件,如項目配置文件(settings.py)、URL定義文件(urls.py)等。
?2.創(chuàng)建Django應(yīng)用
在項目中,我們可以創(chuàng)建多個Django應(yīng)用。每個Django應(yīng)用都是獨立的模塊,包含自己的URL映射、視圖、模板等組件。我們創(chuàng)建一個名為“blog”的應(yīng)用,來演示Django應(yīng)用的創(chuàng)建過程。
在項目根目錄下運行以下命令:
python manage.py startapp blog
創(chuàng)建好應(yīng)用之后,我們會得到以下目錄結(jié)構(gòu):
blog/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
migrations/
__init__.py
其中:
- init.py:空文件,讓Python將此目錄視為一個Python包。
- admin.py:Django后臺管理的相關(guān)配置。
- apps.py:應(yīng)用的一些元數(shù)據(jù)信息,如應(yīng)用名、版本號等。
- models.py:ORM模型定義文件,用于與數(shù)據(jù)庫交互。
- tests.py:Django測試相關(guān)的文件,可用于自動化測試。
- views.py:視圖文件,定義了所有的視圖函數(shù)。
?3.定義ORM模型
在Django中,ORM模型映射數(shù)據(jù)庫中的表,我們可以通過ORM模型來操作對應(yīng)表中的數(shù)據(jù)。Django中的ORM模型以類形式表現(xiàn),一個模型類代表著一個表。在blog應(yīng)用中,我們定義一個名為Post的模型,用于存儲博客文章數(shù)據(jù)。
在blog/models.py中添加以下代碼:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=50)
body = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
在上述代碼中,我們繼承了Django中的Model類,這使得此類變成了一個ORM模型。其中title、body、pub_date分別代表著博客文章的標題、正文和發(fā)布時間,類型分別為CharField、TextField和DateTimeField。str()方法定義了在調(diào)用print函數(shù)時顯示的字符串格式。
4.創(chuàng)建并執(zhí)行數(shù)據(jù)庫遷移
Django中的ORM模型一般需要基于其定義的結(jié)構(gòu)生成數(shù)據(jù)庫表結(jié)構(gòu)。為此,Django提供了一個叫做遷移(migrations)的機制,用來生成、修改和管理數(shù)據(jù)庫表結(jié)構(gòu)。通過運行以下命令,我們可以生成Post模型的遷移文件:
python manage.py makemigrations blog
接著,我們可以通過運行以下命令,在數(shù)據(jù)庫中創(chuàng)建Post模型對應(yīng)的表:
python manage.py migrate
5.定義視圖函數(shù)
視圖函數(shù)是Django應(yīng)用的核心組件之一,用于處理HTTP請求,并返回HTTP響應(yīng)。在我們的博客應(yīng)用中,我們定義一個主頁視圖和一個文章詳情視圖。在blog/views.py中添加以下代碼:
from django.shortcuts import render, get_object_or_404
from . models import Post
def home(request):
posts = Post.objects.all().order_by('-pub_date')
return render(request, 'blog/home.html', {'posts':posts})
def post_detail(request, post_id):
post = get_object_or_404(Post, pk=post_id)
return render(request, 'blog/post_detail.html', {'post':post})
在上述代碼中,我們使用了Django提供的render函數(shù),來渲染指定模板,并將指定的數(shù)據(jù)傳遞給模板。
注意,我們使用了get_object_or_404函數(shù),這個函數(shù)會在查詢結(jié)果為空時返回404錯誤頁面,而不是拋出異常。
6.定義URL路由
Django將URL路由映射為視圖函數(shù),我們需要在項目的urls.py中定義URL路由規(guī)則。在本例中,我們將博客應(yīng)用的主頁映射到“/”路徑,并將文章詳情頁面映射到“/post/<post_id>”路徑。
在myproject/urls.py中添加以下代碼:
from django.contrib import admin
from django.urls import path, include
from blog import views
urlpatterns = [
path('', views.home, name='home'),
path('post/<int:post_id>', views.post_detail, name='post_detail'),
path('admin/', admin.site.urls),
]
在上述代碼中,我們使用了path函數(shù)來定義URL路由規(guī)則。注意,我們將其命名為home和post_detail。
7.編寫模板
最后一步是編寫模板,Django使用模板來生成最終的HTML頁面。在blog應(yīng)用中,我們創(chuàng)建了兩個模板,分別表示博客首頁和文章詳情頁面。新建blog/templates/blog/home.html文件,添加以下代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Welcome to Blog</title>
</head>
<body>
<h1>Blog</h1>
<ul>
{% for post in posts %}
<li><a href="{% url 'post_detail' post.id %}">{{ post.title }}</a></li>
{% endfor %}
</ul>
</body>
</html>
在上述代碼中,我們使用Django模板系統(tǒng)中的for標簽遍歷查詢到的所有文章,并通過url模板標簽定義文章詳情頁面的URL地址。
接著,我們新建blog/templates/blog/post_detail.html文件,添加以下代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ post.title }}</title>
</head>
<body>
<h1>{{ post.title }}</h1>
<p>{{ post.body }}</p>
<p>{{ post.pub_date }}</p>
</body>
</html>
在上述代碼中,我們使用Django模板系統(tǒng)中的變量標簽來顯示文章的標題、正文和發(fā)布時間。
至此,我們已經(jīng)完成了一個簡單的Django應(yīng)用的搭建,可以在瀏覽器中訪問了。運行以下命令啟動Django開發(fā)服務(wù)器:
python manage.py runserver
然后在瀏覽器中訪問http://localhost:8000即可瀏覽博客首頁。點擊任意一篇文章的標題,即可前往文章詳情頁面。文章來源:http://www.zghlxwxcb.cn/news/detail-709330.html
本文僅涵蓋了Django的入門部分,Django框架擁有更加強大和豐富的功能,如表單、圖片上傳、用戶認證等等,讀者可以參考Django官方文檔深入了解。文章來源地址http://www.zghlxwxcb.cn/news/detail-709330.html
到了這里,關(guān)于python之django框架入門,看完你就會的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!