Django網絡框架之HelloDjango項目創建教程

這篇文章主要介紹了Django網絡框架之HelloDjango項目創建,結合實例形式詳細分析了Django框架創建HelloDjango項目的具體步驟與詳細實現技巧,需要的朋友可以參考下

本文實例講述了Django網絡框架之HelloDjango項目。分享給大家供大家參考,具體如下:

這裏將帶你從零開始創建一個Django項目,包含完整的MTV架構、創建子應用,及訪問靜態資源;

項目GitHub地址:https://github.com/ouyangsuo/HelloDjango

@創建Django項目

django-admin.py startproject HelloDjango
  • 查看工程目錄結構
sudo apt install tree
tree HelloDjango/

這裏寫圖片描述

工程的創建也可以在PyCharm中通過新建工程並選擇DjangoProject來實現;
@工程目錄說明

HelloDjango
_init_.py

  • 代表HelloDjango是一個包模塊
  • 可以在其中做全局的初始化動作,例如:導入和初始化數據庫

settings.py

  • Django項目的配置文件,包含但不限於如下配置:
  • 本項目引用的組件;
  • 已安裝的應用;
  • 數據庫配置;
  • 時間語言配置;
  • 靜態文件訪問地址和存儲路徑;

urls.py

  • 用於維護項目的URL路由映射(當客戶端訪問時由哪個函數進行響應);
  • 響應函數通常寫在項目和子應用的views.py文件中;
  • 路由定義例如下圖,表示當用戶通過http://yourhost:port/home/發起 訪問時,該請求通過views.py中的home函數進行響應(此處的views.py需要手動創建);
from HelloDjango import views
url(r'^home/$', views.home)

wsgi.py

  • 定義WSGI的接口信息;
  • 用於服務器部署;
  • 通常使用系統默認設置即可;
  • 項目部署將在後續章節中繼續講述;

manage.py

  • Django用於管理本項目的命令行工具,無需修改,功能包括但不限於:
  • 運行站點;
  • 進行數據遷移操作;

@創建子應用

  • 終端執行
python manage.py startapp MyApp

在HelloDjango的settings.py中註冊應用

# 配置應用
INSTALLED_APPS = [
    # 一堆默認的django應用
    ...
    # 自定義的應用
    'MyApp',
]

@應用目錄結構說明

  • _ init _.py:代表當前目錄是一個包;
  • admin.py:管理站點模型的聲明文件,默認爲空;
  • apps.py:應用信息定義文件,在其中生成了AppConfig,該類用於定義應用名等數據;
  • models.py:添加模型層數據類文件;
  • views.py:定義URL相應函數(路由規則);
  • migrations包:自動生成,數據遷移文件;
  • tests.py:測試代碼文件

@定義數據模型(Models)

定義班級類,在MyApp目錄下的models.py中插入如下代碼

# 班級類
class Grade(models.Model):
  # 班級名稱
  gname = models.CharField(max_length=10)
  # 開班日期
  gdate = models.DateTimeField()
  # 女生數量
  ggirlnum = models.IntegerField()
  # 男生數量
  gboynum = models.IntegerField()
  # 是否已邏輯刪除該班級
  isDelete = models.BooleanField(default=False)
  # 定義班級的打印輸出信息
  def __str__(self):
    return self.gname

在models.py中定義學生類

# 學生類
class Students(models.Model):
  # 學生姓名
  sname = models.CharField(max_length=20)
  # 學生性別
  sgender = models.BooleanField(default=True)
  # 學生年齡
  sage = models.IntegerField()
  # 備註信息
  sinfo = models.CharField(max_length=20)
  # 是否已邏輯刪除該學生
  isDelete = models.BooleanField(default=False)
  # 學生所屬的班級
  sgrade = models.ForeignKey(Grade)

@執行數據遷移

數據遷移的概念,就是將模型映射到數據庫的過程;

生成遷移文件(在MyApp下的migrations包中)

python manage.py makemigrations

執行數據遷移

python mananger.py migrate

  • 遷移過後,框架爲我們自動生成了庫表,Django默認自帶的數據庫是SQLite數據庫;
  • 數據庫文件生成路徑爲工程根目錄下的db.sqlite3;
  • 生成的數據表結構如圖

這裏寫圖片描述

@生造一些數據

生造班級數據如下

這裏寫圖片描述

生造學生數據如下

這裏寫圖片描述

@創建頁面(Templates)

修改HelloDjango下的settings.py中的模板配置

TEMPLATES = [
  {
    ...
    # 將模板頁面放在根目錄/templates目錄下的
    'DIRS': [
      os.path.join(BASE_DIR, 'templates'),
    ],
    ...
  },
]

修改settings.py中的模板配置中的靜態資源配置

# 靜態文件訪問路由
STATIC_URL = '/static/'
# 靜態文件存儲目錄:根目錄/static/
STATICFILES_DIRS = [
  os.path.join(BASE_DIR, 'static'),
]

創建【根目錄/static/img/】目錄並丟入dameinv.jpg

創建templates目錄並在其中創建dameinv.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>大美女</title>
</head>
<body>
大美女來鳥~<br>
{# 加載靜態資源 #}
{% load static %}
{# 加載圖片位置 #}
<img src="{% static 'img/dameinv.jpg' %}" alt="我是大美女">
</body>
</html>

@定義路由映射(Views)

在HelloDjango下的urls.py中插入如下代碼

from HelloDjango import views
from MyApp.admin import site
# 分發路由請求
urlpatterns = [
  # url(r'^admin/', admin.site.urls),
  url(r'^admin/', site.urls),
  # http://127.0.0.1:8000/請求交由HelloDjango下的views中的index函數處理
  url(r'^$',views.index),
  # http://127.0.0.1:8000/dameinv請求交由HelloDjango下的views中的dameinv函數處理
  url(r'^dameinv/',views.dameinv),
  # http://127.0.0.1:8000/myapp/xxx統統交由MyApp下的urls重新分發
  url(r'^myapp/',include('MyApp.urls'))
]

在MyApp的urls.py中插入如下代碼

# 定義路由映射
urlpatterns = [

  # 請求http://127.0.0.1:8000/myapp/,交由MyApp下的views.py中的welcome函數處理
  url(r'^$', views.welcome)
]

@定義路由處理函數(Views)

在HelloDjango下的views中插入如下代碼

# 處理http://127.0.0.1:8000/
def index(request):
  # 直接在頁面輸出內容
  return HttpResponse('Django:江中自有黃金屋,屋裏把那代碼擼,江中自有顏如玉,硬盤堆滿幾百G')
# http://127.0.0.1:8000/dameinv/
def dameinv(request):
  # 渲染頁面並呈現給用戶
  return render(request,'dameinv.html')

在MyApp下的views.py中插入如下代碼

def welcome(request):

# 查詢所有學生
students = Students.objects.all()
# 構造數據字典
data={
  'students':students
}
# 將數據丟給templates/welcome.html進行渲染並呈現給用戶
return render(request,'welcome.html',context=data)

@運行項目

終端執行如下命令中的一條:

python manage.py runserver
python manage.py runserver [port]
python manage.py runserver [ip:port]

  • 默認使用8000端口;
  • ip指定爲0.0.0.0的時候,匹配本機的全部ip;

@訪問測試

訪問127.0.0.1:8002/

這裏寫圖片描述

訪問127.0.0.1:8002/dameinv/

這裏寫圖片描述

訪問127.0.0.1:8002/myapp/

這裏寫圖片描述

希望本文所述對大家基於Django框架的Python程序設計有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章