Django基礎

Django介紹:

Django簡介:

為什么使用Django?

知識儲備:

學習目標:


DJango初體驗:

1.安裝DJango:

sudo pip install -i https://pypi.doubanio.com/simple/ Django

使用國內鏡像

創建Django項目

django-admin startproject demo

會在目錄下產生一個manage.py管理腳本

python manage.py runserver 0.0.0.0:8080  #局域網內的機子可以訪問本機ip的8080

mac訪問虛擬機中的Ubuntu里建的website


2.Django工程目錄:

_init_py:?聲明了這個子目錄上是一個python模塊

2.1 Django的應用目錄大致結構:

2.1.1 創建應用:

python manage.py startapp blog

2.1.2 添加應?用:

在settings.py 添加


2.1.3 應用目錄詳解:

_init_py:?聲明了這個子目錄上是一個python模塊
views.py:聲明了視圖邏輯
models.py:聲明了數據模型
admin.py:將數據模型注冊到Django內置的管理模塊中
tests.py:單元測試
migrations:用于數據遷移

舊版本代碼:

新版本代碼:

!(Django1.10需要修改的地方)[http://stackoverflow.com/questions/38394598/typeerror-view-must-be-a-callable-or-a-list-tuple-in-the-case-of-include]
!(Django 創建第一個項目)[http://www.runoob.com/django/django-first-app.html]

3.Django概述(重要概念)


Django開發-基礎篇

DJango模板語法及使用:

什么是模板

模板是一個文本,用于分離文檔和表現內容,通常用于生成HTML。

<html>
<head>template</head>
<body>
<p>Hello{{name}}</p>
<ul>
{% for item in itemlist %}
    <li>{{item}}</li>
{% endfor %}
</ul>
{% if status %}
    <p> I love python </p>
{% else %}
    <p> I love django </p>
{% endif %}
</body>

模板使用方法:

1.用原始的模板代碼字符串創建一個Template對象
2.調用模板對象的render方法,并且傳入一套變量context

python manage.py shell

from django import template
t = template.Template('hello,{{name}}')  #創建一個變量name
c = template.Context({'name':'django'})  #創建了一個context并傳入一個name的值
print t.render(c)        #調用render方法來渲染

一旦你創建了一個template對象,你就可以用context處理器來傳遞數據給它,最用調用render()方法來渲染它

模板中過濾器:

過濾器就是將模板中的變量過濾一遍,在變量顯示前修改它的一個方法。
如:下列代碼中,upper就是一個過濾器:將name這個變量轉化為全部為大寫字母的格式。

{{name|upper}}

模板的加載 :

Django提供了一種使用方便且功能強大的API,用于解決模板加載調用過程的問題。

創建一個文件夾templates,并寫入模板:

在settings.py寫入

import os

TEMPLATES_DIRS =  os.path.join(os.path.dirname(__file__),'templates')
#可以根據路徑查找模板

在manage.py shell 輸入:

from django.template.loader import get_template
t =  get_template("2.html")
t

輸出:

<django.template.backends.django.Template at 0x7f6e2da0d790> 
#說明模板使用成功

模型開發與數據庫交互:

使用原生方法連接數據庫:

from django.test import TestCase
import MySQLdb

db = MySQLdb.connect(user = 'root',password= 'root',db ='test')#連接數據庫
cursor = db.cursor()  #創建一個游標
cursor.execute('select * from table')#使用sql語句
result = cursor.fetchall()  #獲取返回的結果
cursor.close()
db.close()  #關閉數據庫連接

配置settings.py文件:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',#選擇數據庫引擎
        #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    'USER':'root',
    'PASSWORD':'root',
    'NAME':'test',
    'HOST':'localhost'
}

}

在模型中使用數據庫:

修改models.py:

from django.db import models

class Mysite(models.Model):
    #定義一個title,字符串類型
    title = models.CharField(max_length=100) 
    url = models.URLField()
    author = models.CharField(max_length=100)
    #定義一個num,整形    
    num = models.IntegerField(max_length=10)

檢查模型:

python manage.py check

將模型同步到數據庫中:

python manage.py makemigrations
python manage.py migrate
同步成功

django1.10的很多操作跟現在出版的書里的命令都不一樣了

安裝python模塊時出現:error: Setup script exited with error: command 'gcc' failed with exit status 1

mysql-python安裝時EnvironmentError: mysql_config not found

“全能”選手—Django 1.10文檔中文版Part1

Django新手圖文教程

Django基本操作命令

模型開發與數據庫交互--數據處理:

1.基本數據訪問

from blog.models import *
m = Mysite.objects.all()
m
# Out[6]: <QuerySet []> #數據為空,輸出空列表

2.插入和更新數據

m = Mysite(title='django',num=2)
m.save()
m = Mysite.objects.all() #查詢所有
m
#Out[10]: <QuerySet [<Mysite: Mysite object>]>
m[0].title
#Out[11]: u'django'

3.數據過濾

m = Mysite.objects.get(num=2)
m
#Out[13]: <Mysite: Mysite object>
m.title
#Out[14]: u'django'

4.數據排序

#插入多條?數據
m = Mysite(title='django',num=3)
m.save()
m = Mysite(title='django',num=9)
m.save()
m = Mysite(title='django',num=1)
m.save()
#以num進行排序
m = Mysite.objects.all().order_by("num")
m[0].num
#Out[30]: 1L

5.更新多個對象,刪除對象等

m = Mysite.objects.get(num=2)
m.title
#Out[32]: u'django'
m.title = 'python' #更新數據

m.delete() #獲取對象后進行刪除即可

Django 的后臺管理及表單類介紹:

Django的自動管理界面:通過讀取你模式中的元數據,提供一個強大而且可以使用的界面。

例子:
修改views.py,編寫視圖函數:

from blog.models import *
from blog.forms import *
from django.http import HttpResponse
from django.shortcuts import render_to_response

def hello(request):
    if request.method == 'POST':
        form = Mybook(request.POST)#將post的數據填到表單里面
        if form.is_valid():  #驗證是否有效
            data = form.cleaned_data
            title = data['title']  #取其中title數據
    return HttpResponse(title)

    form = Mybook()##如果是get請求,則返回這個頁面
    return render_to_response('1.html',{'form':form})

添加froms.py:

from django import forms

class Mybook(forms.Form):
    name = forms.CharField()
    author = forms.CharField()
    date = forms.CharField()

添加1.html:

<html>
<body>
    <form method='post'>
    {{form.as_p}}
    <input type = "submit" name = "ok">
    </from>
</body>
</html>
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容