Django入門

1.環(huán)境安裝

django支持python3+,且只支持python2.7

1)安裝python

https://www.python.org/downloads/release/python-2715/

image.png

2)安裝django

www.djangoproject.com

image.png

django 對(duì)python的支持情況
安裝1.10.2版本django

pip install Django==1.10.2

image.png

判斷django是否安裝成功:

python -m django --version

2.創(chuàng)建django

安裝完django后命令行中就多了行django命令,選擇好安裝目錄

django-amdin startproject myblog (項(xiàng)目名稱:myblog 定義好名稱后運(yùn)用時(shí)不建議修改妆距,配置文件中也是以myblog命名配置)


image.png

項(xiàng)目結(jié)構(gòu):


image.png

1.manage.py
與項(xiàng)目進(jìn)行交互的命令行工具集的入口(項(xiàng)目管理器)
啟動(dòng)命令:
python manage.py runserver
python manage.py runserver + 端口號(hào)
默認(rèn)端口 8000


image.png

2.wsgi.py(基本不用修改)
WSGI(Python Web Server Gateway Interface)
python服務(wù)器網(wǎng)關(guān)接口
python應(yīng)用與web服務(wù)器之間的接口

3.urls.py
配置url

4.settings.py
項(xiàng)目的總配置文件
里面包含數(shù)據(jù)庫、web應(yīng)用糖声、時(shí)間等各種配置
1.BASE_DIR :項(xiàng)目根目錄
2.SECRET_KEY:項(xiàng)目安全碼
3.DEBUG:不要在實(shí)際生產(chǎn)中打開
4.ALLOWED_HOSTS:只允許外部訪問地址
5.INSTALLED_APPS:django應(yīng)用
6.MIDDLEWARE:中間件
7.ROOT_URLCONF:url根路徑
8.TEMPLATES:模板文件
9.DATABASES:數(shù)據(jù)庫配置妙色,默認(rèn)是sqlite,如要自定義數(shù)據(jù)庫到 https://docs.djangoproject.com/en/1.10/ref/settings/#databases 中尋找配置方式
10.AUTH_PASSWORD_VALIDATORS:密碼認(rèn)證
11.STATIC_URL:靜態(tài)文件

5.init.py
聲明模塊文件绑青,一般為空

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

 1.打開命令行盆顾,進(jìn)入項(xiàng)目中manage.py同級(jí)目錄
 
 2. 輸入命令:python manage.py startapp blog
image.png
 3. 添加應(yīng)用名到settings.py 中的INSTALLED_APPS中
image.png

4.應(yīng)用目錄介紹

 1.migrations
    數(shù)據(jù)移植(遷移) 模塊
 2.admin.py
    該應(yīng)用的后臺(tái)管理系統(tǒng)配置
 3.apps.py
    該應(yīng)用 的配置
    1.8+后自動(dòng)生成
 4.models.py
    數(shù)據(jù)模塊怠褐,使用ORM框架,類似MVC的模型
 5.test.py
    自動(dòng)化測試模塊 
 6.views.py
    執(zhí)行響應(yīng)代碼所在模塊
    代碼邏輯處理的主要地點(diǎn)
    項(xiàng)目大部分代碼在這編寫

5.創(chuàng)建第一個(gè)響應(yīng)

代碼:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def index(request):
    return HttpResponse("Hello,world!")

配置url:myblog>urls.py


image.png

查看結(jié)果:


image.png

6.配置url

1)在blog目錄下創(chuàng)建urls.py
image.png
from django.conf.urls import url

from . import views
urlpatterns = [
    url(r'^index/', views.index),
]

2)在urls.py中引用blog.urls
image.png

7.Template

1.

Django使用了一種特殊的模板語言(Django Template Language,DTL)
可以使用第三方模板Jinja2


image.png

image.png
1)在APP的根目錄下創(chuàng)建Templates的目錄
2)在該目錄下創(chuàng)建HTML文件
3)在views.py中返回render
from django.shortcuts import render
from django.http import HttpResponse

#render包含三個(gè)參數(shù)您宪,第一個(gè)是request請(qǐng)求奈懒,第二個(gè)是返回頁面地址(即html),第三個(gè)為返回?cái)?shù)據(jù)
def index(request):
    return render(request, 'index.html')

2.DTL初步使用

render()函數(shù)中支持一個(gè)dict類型參數(shù)(鍵值對(duì))
該字典是后臺(tái)參數(shù)傳遞到模板的參數(shù)宪巨,鍵為參數(shù)名
在模板中使用{{參數(shù)名}}來直接使用

views.py:

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return render(request, 'index.html', {'hello': 'Hello,Blog!'})

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>{{hello}}</h1>
</body>
</html>
image.png

***Django第一個(gè)坑

Django查找Template
Django按照INSTALLED_APP中的添加順序查找Templates
不同APP下Templates目錄中的同名.html文件會(huì)造成沖突

解決方案

在APP的Templates目錄下創(chuàng)建以APP名為名稱的目錄
將html文件放入新創(chuàng)建的目錄下


image.png

8.Models

ORM(對(duì)象關(guān)系映射)
實(shí)現(xiàn)了對(duì)象與數(shù)據(jù)之間的映射
隱藏了數(shù)據(jù)訪問的細(xì)節(jié)磷杏,不需要編寫sql語句

    通常,一個(gè)Model對(duì)應(yīng)數(shù)據(jù)庫的一張數(shù)據(jù)表
    Django中Models以類的形式表現(xiàn)
    它包含了一些基本字段以及數(shù)據(jù)的一些行為
1)在應(yīng)用根目錄下創(chuàng)建models.py揖铜,并引入models模塊(Django已完成)
2)創(chuàng)建類茴丰,繼承models.Model,該類即是一張數(shù)據(jù)表
3)在類中創(chuàng)建字段
   字段即類里面的屬性(變量)
   attr=models.CharField(max_length=64)

models.py:

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(nul=True)
4)生成數(shù)據(jù)表
1.命令行中進(jìn)入manage.py同級(jí)目錄
2.執(zhí)行python manage.py makemigrations app名(可選)
3.再執(zhí)行python manage.py migrate
4.Django在app/migrations/目錄下生成移植文件
5.執(zhí)行python manage.py sqlmigrate 應(yīng)用名 文件id 查看SQL語句
6.默認(rèn)sqlite3的數(shù)據(jù)庫在項(xiàng)目根目錄下db.sqlite3
5)頁面數(shù)據(jù)呈現(xiàn)
1.views.py中import models
2.article = models.Article.objects.get(pk=1)
3. render(request,page,{'article' : article})

views.py:

from django.shortcuts import render
from django.http import HttpResponse
from . import models

def index(request):
    article = models.Article.objects.get(pk=1)
    return render(request, 'blog/index.html', {'article': article})

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>{{article.id}}</h1>
    <h1>{{article.title}}</h1>
    <h1>{{article.content}}</h1>
</body>
</html>
image.png

9.Admin

Admin是Django自帶的一個(gè)功能強(qiáng)大的自動(dòng)化數(shù)據(jù)管理頁面
被授權(quán)的用戶可直接在Admin中管理數(shù)據(jù)庫
Django提供了許多針對(duì)Admin的定制功能

1)配置Admin
1.創(chuàng)建用戶
  python manage.py createsuperuser  創(chuàng)建超級(jí)用戶
2.localhost:8000/admin/ Admin 入口
3.修改settings.py 中 LANGUAGE_CODE='zh_Hans' 英文變中文操作界面
2)配置應(yīng)用
1.在應(yīng)用下admin.py中引入自身的models模塊(或里面的模型類)
2.編輯admin.py: admin.site.register(models.Article)

admin.py:

from django.contrib import admin

from models import Article

admin.site.register(Article)
3.當(dāng)前顯示很不方便,需要修改數(shù)據(jù)默認(rèn)顯示名稱
image.png
    在Article類下添加一個(gè)方法
    根據(jù)Python版本選擇_str_(self)  【3.0+】 或 _unicode_(self) 【2.7+】
    return self.title

models.py:

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
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贿肩,一起剝皮案震驚了整個(gè)濱河市峦椰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汰规,老刑警劉巖汤功,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異溜哮,居然都是意外死亡滔金,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門茂嗓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來餐茵,“玉大人,你說我怎么就攤上這事述吸》拮澹” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵蝌矛,是天一觀的道長道批。 經(jīng)常有香客問我,道長入撒,這世上最難降的妖魔是什么隆豹? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮茅逮,結(jié)果婚禮上璃赡,老公的妹妹穿的比我還像新娘。我一直安慰自己献雅,他們只是感情好鉴吹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惩琉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪夺荒。 梳的紋絲不亂的頭發(fā)上瞒渠,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音技扼,去河邊找鬼伍玖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛剿吻,可吹牛的內(nèi)容都是我干的窍箍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼椰棘!你這毒婦竟也來了纺棺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤邪狞,失蹤者是張志新(化名)和其女友劉穎祷蝌,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帆卓,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡巨朦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剑令。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糊啡。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吁津,靈堂內(nèi)的尸體忽然破棺而出棚蓄,到底是詐尸還是另有隱情,我是刑警寧澤腺毫,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布癣疟,位于F島的核電站,受9級(jí)特大地震影響潮酒,放射性物質(zhì)發(fā)生泄漏睛挚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一急黎、第九天 我趴在偏房一處隱蔽的房頂上張望扎狱。 院中可真熱鬧,春花似錦勃教、人聲如沸淤击。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽污抬。三九已至,卻和暖如春绳军,著一層夾襖步出監(jiān)牢的瞬間印机,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工门驾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留射赛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓奶是,卻偏偏與公主長得像楣责,于是被迫代替她去往敵國和親竣灌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容