中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-22 02:24:11 來源:腳本之家 閱讀:169 作者:水木·圳烜 欄目:開發技術

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

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

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

@創建Django項目

  • 首先進入特定的虛擬開發環境,參考創建虛擬開發環境
  • 在終端cd到特定目錄,執行:
django-admin.py startproject HelloDjango
  • 查看工程目錄結構
sudo apt install tree
tree HelloDjango/

Django網絡框架之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;
  • 生成的數據表結構如圖

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

@生造一些數據

生造班級數據如下

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

生造學生數據如下

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

@創建頁面(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/

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

訪問127.0.0.1:8002/dameinv/

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

訪問127.0.0.1:8002/myapp/

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

微博| 陆河县| 华阴市| 北京市| 玉田县| 深水埗区| 嘉鱼县| 航空| 清流县| 财经| 寻甸| 嘉兴市| 灯塔市| 绥中县| 会理县| 莎车县| 合水县| 盐山县| 阳朔县| 固原市| 清丰县| 峨山| 肥乡县| 仁寿县| 阳城县| 临西县| 遂川县| 肃北| 突泉县| 桂阳县| 朝阳区| 土默特右旗| 和顺县| 抚顺市| 太仆寺旗| 靖安县| 建瓯市| 景洪市| 桐城市| 云龙县| 新余市|