Django

環(huán)境搭建

Django的具體內(nèi)容可以到官網(wǎng)查看
Django官網(wǎng)

Django安裝

詳情可參考官網(wǎng)安裝介紹
具體需要安裝哪個版本的Django,可以參考這里,這里列出了Django與python的兼容版本,請自行選擇。

1. pip包管理器安裝(最方便 推薦)

pip install Django==2.1.7

2. 源碼安裝

git clone https://github.com/django/django.git

下載源碼,然后進入根目錄執(zhí)行python setup.py install即可

是否安裝成功可是用以下命令檢測:

python -m django --version

查看Django版本

或者進入python命令行中,導(dǎo)入Django,如果不報錯即安裝成功

import django

創(chuàng)建項目及應(yīng)用

創(chuàng)建項目

1. 打開終端進入想要創(chuàng)建項目的目錄
2. 執(zhí)行命令 django-admin startproject blog
3. 如果沒有報錯,即項目創(chuàng)建成功

項目目錄結(jié)構(gòu)

項目創(chuàng)建成功后我們可以發(fā)現(xiàn),在原先的路徑下多出了一個blog的文件夾,并且其內(nèi)部還自動生成了若干文件和文件夾。

項目目錄結(jié)構(gòu)

manage.py      // 項目管理器 執(zhí)行python manage.py可以查看所有命令
blog      // 項目容器,包含項目的一些基本配置文件信息
   __init__.py      // python中聲明模塊的文件,默認為空
   settings.py      // 項目的總配置文件,包含了數(shù)據(jù)庫、web應(yīng)用、時間等配置信息
   urls.py      // url配置文件,Django項目中所有頁面地址都需要在此配置
   wsgi.py      // python服務(wù)器網(wǎng)管接口  全稱:Python Web Server Gateway Interface

啟動項目服務(wù)器

python manage.py runserver 默認使用8000端口號

python manage.py runserver 9999 自定義端口號

在執(zhí)行以上啟動服務(wù)的命令時,python會先對項目進行檢查,之后再啟動。

啟動項目服務(wù)器

這個時候我們就可以在瀏覽器中通過 127.0.0.1:8000來訪問了

創(chuàng)建應(yīng)用

1. 打開終端進入項目中manage.py同級目錄
2. 執(zhí)行命令: python manage.py startapp blog
3. 添加應(yīng)用名到settings.py配置文件中的INSTALLED_APPS中,如下圖所示
添加應(yīng)用名

應(yīng)用目錄結(jié)構(gòu)

migrations      // 數(shù)據(jù)移植模塊,內(nèi)容自動生成
   __init__.py
__init__.py
admin.py      // 該應(yīng)用的后臺管理系統(tǒng)配置
apps.py      // 當(dāng)前應(yīng)用的一些配置
models.py      // 數(shù)據(jù)模型模塊,使用ORM框架
tests.py      // 自動化測試模塊,在這里編寫測試腳本
views.py      // 執(zhí)行響應(yīng)的代碼模塊,項目中大部分代碼均在這里編寫(代碼邏輯處理的主要地點)

創(chuàng)建第一個響應(yīng)頁面

1. 編輯blog.views.py文件
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse('Hello World!')
2. 配置urls.py
import blog.views as hv
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', hv.index)
]

此時再次訪問 127.0.0.1:8000/index/時即可看到頁面上顯示出Hello World!。

響應(yīng)頁面

注意:

編輯blog.views.py

  1. 中每個響應(yīng)對應(yīng)一個函數(shù),函數(shù)必須返回一個響應(yīng)
  2. 中函數(shù)必須存在一個參數(shù),一般約定為request
  3. 中每個響應(yīng)(函數(shù))對應(yīng)一個URL

編輯urls.py

  1. 每個URL都以url的形式寫出來
  2. url函數(shù)放在urlpatterns列表中
  3. url函數(shù)包含三個參數(shù):URL(正則)、對應(yīng)方法(響應(yīng)函數(shù)名稱)、名稱

URL的另一種配置方式

1. 在根urls.py中引入include
2. 在APP目錄下創(chuàng)建urls.py文件,格式與根urls.py相同
3. 根urls.py中url函數(shù)的第二個參數(shù)改為include( 'blog.urls')

即:

blog.urls.py文件
根urls.py文件

這樣做的主要目的是為了防止在大型項目中,根urls.py文件配置雜亂、臃腫而不易維護,將其每個頁面的url配置分散到每個應(yīng)用中的urls.py中。

Templates介紹

Templates說白了就是HTML文件,主要使用了Django模板語言(Django Template Language , DTL)

開發(fā)第一個Template

1. 在APP的根目錄下創(chuàng)建名叫Templates的目錄
2. 在該目錄下再創(chuàng)建一個以該APP應(yīng)用名為名的目錄(假設(shè)在blogAPP下創(chuàng)建了Templates目錄,再在Templates目錄下創(chuàng)建blog目錄),這里是為了防止多個APP引用各自Templates目錄下同名模板引發(fā)的引用錯亂。
3. 在views.py中返回render()
views.py中返回render()

render()函數(shù)支持一個dict類型的參數(shù)
該字典是后臺傳遞到模板文件的參數(shù),鍵為參數(shù)名
在模板中使用{{ 參數(shù)名 }}來直接使用

如下:

blog.views.py
blog.templates.blog.index.html
效果圖

Models介紹

通常,一個model對應(yīng)數(shù)據(jù)庫的一張數(shù)據(jù)表
Django中的Model以類的形式表現(xiàn)
其中包含了一些基本字段以及數(shù)據(jù)的一些行為

編寫Model

1. 在應(yīng)用根目錄下創(chuàng)建models.py,并引入models模塊
2. 創(chuàng)建類,集成models.Model,該類即是一張數(shù)據(jù)表
3. 在類中創(chuàng)建字段
blog.models.py

字段創(chuàng)建

字段即類里面的屬性(變量)
字段創(chuàng)建參考這里

attr = models.CharField(max_length = 64)
attr1 = models.TextField()

生成數(shù)據(jù)表

1. 終端進入manage.py同級目錄
2. 執(zhí)行命令 python manage.py makemigrations APP名(可選) (如果跟上APP名字,則表示只該APP下生成數(shù)據(jù)遷移;否則該項目下所有的應(yīng)用都生成數(shù)據(jù)遷移)
準備生成數(shù)據(jù)遷移
3. 再執(zhí)行命令 python manage.py migrate
創(chuàng)建數(shù)據(jù)遷移

根據(jù)終端輸出可以知道,執(zhí)行命令不僅僅只生成了blog.0001_initial...,還生成了很多的auth開頭的和admin開頭的東東,關(guān)于這些具體是什么,我們可以從項目根目錄中的settings.py中的INSTALLED_APPS中可以略知一二,在INSTALLED_APPS中除了我們自己添加的blog之外,剩余的都是系統(tǒng)自帶的。
執(zhí)行完畢后,Django會自動在app/migrations目錄下生成移植文件,如下:

# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2019-02-20 14:12
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Article',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(default='Title', max_length=32)),
                ('content', models.TextField(null=True)),
            ],
        ),
    ]

從以上自動生成的移植文件中可知,Django除了為我們生成了我們定義的titlecontent外,還添加了id作為Article表的主鍵且自增。

執(zhí)行python manage.py sqlmigrate 應(yīng)用名 文件id可以查看SQL語句,如下:

查看SQL語句

當(dāng)然也可以借助三方軟件來查看根目錄下的db.sqlite3數(shù)據(jù)庫文件并通過可視化三方工具向數(shù)據(jù)庫blog_article數(shù)據(jù)表中添加若干條數(shù)據(jù)。

獲取數(shù)據(jù)庫中的數(shù)據(jù)并展示到頁面

1. blog.views.py中 import models
2. 獲取數(shù)據(jù) article = models.Article.objects.get(pk = 1)
3. 函數(shù)返回數(shù)據(jù) return render(request, 'blog/index.html', {'article' : article})
4. 前端模板中直接使用{{ article.title }}{{ article.content }}即可獲取到數(shù)據(jù)

自帶Admin后臺介紹

Admin是Django自帶的一個功能強大的自動化數(shù)據(jù)管理界面
被授權(quán)的用戶可以直接在Admin中管理數(shù)據(jù)庫
Django提供了很多針對Admin的定制功能

創(chuàng)建用戶

終端在manage.py同級目錄執(zhí)行命令 python manage.py createsuperuser

image.png

localhost:8000/admin即為后臺管理入口
可以更改settings.py中的LANGUAGE_CODE = 'zh_Hans'即為顯示漢語。

image.png

定制顯示自己創(chuàng)建的blogAPP的Article數(shù)據(jù)表

1. 在應(yīng)用下admin.py中引入自身的models模塊
2. 編輯admin.py admin.site.register(models.Article)
image.png
默認顯示對象

修改數(shù)據(jù)默認顯示名稱

1. 在Article類下添加一個方法
2. 根據(jù)Python版本選擇__str__(self)或者__unicode__(self)
3. return self.title
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

class Article(models.Model):
    title = models.CharField(max_length = 32, default = 'Title')
    content = models.TextField(null = True)

    def __unicode__(self):
        return self.title

更改后顯示文章標題
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • (一)、啟動服務(wù)器 (二)、創(chuàng)建數(shù)據(jù)庫表 或 更改數(shù)據(jù)庫表或字段 Django 1.7.1及以上 用以下命令 1....
    夏天夏星閱讀 5,940評論 0 17
  • 去年的事情特別多,也沒有什么時間充電學(xué)習(xí)。今年目測輕松一點,年初本來計劃就好好休息一下,結(jié)果一晃2017就度過了一...
    灰豹兒閱讀 681評論 0 2
  • 模塊間聯(lián)系越多,其耦合性越強,同時表明其獨立性越差( 降低耦合性,可以提高其獨立性)。軟件設(shè)計中通常用耦合度和內(nèi)聚...
    riverstation閱讀 2,203評論 0 8
  • 此段內(nèi)容簡要來自自強學(xué)堂的教程詳情請查詢自強學(xué)堂 一、 后臺的運作流程 接收request請求 處理數(shù)據(jù) 獲取請求...
    coder_ben閱讀 5,338評論 6 56
  • 1.簡介 ython下有許多款不同的 Web 框架。Django是重量級選手中最有代表性的一位。許多成功的網(wǎng)站和A...
    可汗爺爺閱讀 1,338評論 0 3

友情鏈接更多精彩內(nèi)容