Django學(xué)習(xí)筆記

mvc model view control
django-admin startproject 在當(dāng)前目錄創(chuàng)建一個(gè)項(xiàng)目框架
python manage.py startapp appname 在當(dāng)前目錄創(chuàng)建一個(gè)app框架


因?yàn)槿鄙賡etuptools模塊跳出ImportError塑娇,安裝setupuptools解決蹬耘。


常用正則表達(dá)式
. 匹配任意字符
[a-zA-Z] 匹配a-z不區(qū)分大小寫
+ 匹配一次或者多次
? 匹配零次或者一次
* 匹配零次或者多次
\d 匹配數(shù)字
[^a] 匹配不為a的字符
{1,3} 匹配之前表達(dá)式1-3次


關(guān)于模型

每個(gè)模型都上一個(gè)繼承自django.db.models.Model類的實(shí)例涯捻。
每一個(gè)類的屬性表示數(shù)據(jù)庫的字段乘盼。
字段通過Field類的實(shí)例表示,如下所示

from django.db import models #default

# Create your models here.

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    published_date = models.DateTimeField('date published')

class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)  

不同的Field實(shí)例表示該字段數(shù)據(jù)的類型,第一個(gè)可選參數(shù)是一個(gè)字符串用以人類可讀,若不給就是實(shí)例的名字财搁。
ForeignKey 表示每個(gè)Choice關(guān)聯(lián)一個(gè)Question

python manage.py makemigrations polls 運(yùn)行makemigrations說明已經(jīng)創(chuàng)建了新的模型,并且將這個(gè)行為儲(chǔ)存為一個(gè)遷移文件躬络。
python manage.py sqlmigrate polls 0001 執(zhí)行這條命令會(huì)返回遷移文件對(duì)應(yīng)的數(shù)據(jù)庫命令尖奔。
python manage.py check 用于檢查項(xiàng)目中的模型是否有問題。
python manage.py migrate 創(chuàng)建模型所對(duì)應(yīng)的表穷当。

為每個(gè)模型定義一個(gè)__str__方法提茁,這樣Question.objects.all()返回的就是可以區(qū)別各個(gè)模型項(xiàng)的信息。

在管理頁面中注冊模型

在admin.py中通過admin.site.register(Question)來注冊相應(yīng)的模型馁菜。

關(guān)于模板

setting.py 配置了context_prosessors
這上一個(gè)可調(diào)用函數(shù)的默認(rèn)的元組茴扁,以request對(duì)象作為參數(shù),返回一個(gè)傳給context的字典汪疮。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(os.path.dirname(__file__),'templates').replace('\\','/')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

以上上1.10.2的默認(rèn)配置

關(guān)于轉(zhuǎn)義

django一般會(huì)幫你轉(zhuǎn)義和html沖突的字符峭火,以得到正確的顯示,如果不希望進(jìn)行轉(zhuǎn)義智嚷,可以在通過管道符添添加一個(gè)safe
若希望對(duì)一個(gè)塊區(qū)域轉(zhuǎn)義是否卖丸,可以使用autoescape標(biāo)簽,記得要關(guān)閉標(biāo)簽盏道。

{% autoescape off %}
    這里的不會(huì)被轉(zhuǎn)義
    {% autoescape on %}
        這里的會(huì)被轉(zhuǎn)義
    {% endescape %}
{% endescape %}

在每個(gè){% for %} 循環(huán)中有一個(gè)forloop模板變量稍浆,這個(gè)變量有一些關(guān)于循環(huán)的信息。
forloop.counter 當(dāng)前循環(huán)次數(shù),第一次為1
forloop.counter0 當(dāng)前循環(huán)次數(shù)粹湃,第一次為0
forloop.recounter 剩余循環(huán)次數(shù),最后一次為1
forloop.recounter0 剩余循環(huán)次數(shù)泉坐,最后一次為0
forloop.first 如果循環(huán)是第一次執(zhí)行为鳄,那么它被設(shè)置為True
forloop.last 如果循環(huán)是最后一次執(zhí)行,那么它會(huì)被設(shè)置為True
forloop.parentloop 指向上一級(jí)循環(huán)的forloop對(duì)象
forloop 只能在循環(huán)中使用腕让。

{% ifequal %} 比較兩個(gè)值孤钦,相等是顯示{% ifequal %} 和 {% endifequal %}之間的內(nèi)容,只有模板變量纯丸,字符串偏形,證書和小數(shù)可以作為其參數(shù)。

{# 這是模板注釋的用法 #} 觉鼻,模板注釋不能跨越多行俊扭,如果要多行注釋,可以使用{% comment %} {% endcomment %}模板標(biāo)簽坠陈。

過濾器

{{ name|lower }} 模板過濾器用來在變量顯示前修改它的值的一個(gè)簡易方法萨惑,這里顯示的內(nèi)容是變量{{ name }}被過濾器lower處理后的結(jié)果,它的功能是轉(zhuǎn)換為小寫仇矾,過濾器可以嵌套使用庸蔼。
,有些過濾器需要參數(shù)贮匕,參數(shù)使用方法如下:
{{ bio|truncatewords:'30' }} 這將顯示變量{{ bio }}的前30個(gè)詞姐仅。
點(diǎn)擊查看各種過濾器

{% include %} 該模板標(biāo)簽允許模板中可以包含其他模板的內(nèi)容。

{% extends %} 集成一個(gè)基礎(chǔ)模板刻盐。掏膏、

{% block %} 在子模板中使用這個(gè)標(biāo)簽可以覆蓋基礎(chǔ)模板中相應(yīng)的標(biāo)簽,如果希望在基礎(chǔ)模板的內(nèi)容上添加內(nèi)容隙疚,可以在子模板的{% block %}中使用{{ block.super }}


關(guān)于setting.py

首先這里是官方數(shù)據(jù)庫配置文檔壤追,遇到問題可以查閱。
部署的時(shí)候
DEBUG = False
ADMINS = [('John', 'john@example.com'), ('Mary', 'mary@example.com')]

INSTALLED_APPS

Django中激活的應(yīng)用的名字都保存在這里供屉,以下上1.10.1默認(rèn)的配置行冰。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

django.contrb.admin 這是管理站點(diǎn)的應(yīng)用。
django.contrib.auth 這是認(rèn)證系統(tǒng)應(yīng)用伶丐。
django.contrib.contenttypes 用與內(nèi)容類型的框架
django.contrib.sessions 關(guān)于會(huì)話的應(yīng)用
django.contrib.messages 關(guān)于消息的應(yīng)用
django.contrib.staticfiles 管理靜態(tài)文件的應(yīng)用

數(shù)據(jù)庫

這里是ubuntu官方關(guān)于postgresql的用法
附錄B 關(guān)于數(shù)據(jù)庫 模型語法和字段類型
附錄C 關(guān)于django中數(shù)據(jù)庫API


django發(fā)送email

首先在setting.py內(nèi)配置eamil相關(guān)信息悼做。
send_email 參數(shù)
關(guān)于CSFR權(quán)限問題


關(guān)于views.py

django.http.HttpResponse 返回一個(gè)string,參數(shù)為string
django.http.HttpResponseRedirect 重定向到一個(gè)路由哗魂,參數(shù)為一個(gè)路由肛走。


關(guān)于forms.py

django為每一個(gè)表單創(chuàng)建了一個(gè)form類
django.forms.Form()實(shí)例方法
假設(shè)f是實(shí)例

f.is_bound 查看實(shí)例是否綁定數(shù)據(jù)

f.is_valid() 返回布爾值,是否合法
f.errors 字段和出錯(cuò)消息映射表
f[string].errors 單獨(dú)字段的出錯(cuò)信息
f.cleaned_data 通過驗(yàn)證后录别,這個(gè)屬性上一個(gè)提交數(shù)據(jù)的字典

在表單定義里定義一個(gè)clean_開頭朽色,字段名稱結(jié)束的方法邻吞,是自定義的驗(yàn)證方法。

    subject = forms.CharField()
    email = forms.EmailField(required=False,label="your email address!")
    message = forms.CharField(widget=forms.Textarea)```
`label`自定義字段在頁面中顯示的標(biāo)簽


#### 關(guān)于靜態(tài)文件
每個(gè)應(yīng)用文件夾下應(yīng)有一個(gè)`static/appname/static/` 文件夾葫男,靜態(tài)文件在這里管理抱冷。
模板在`<head>`使用`{% load staticfiles %}`,然后在后面
`<link rel='stylesheet' type='text/css' href={% static 'appname/static/<staticfile>  %}`
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梢褐,一起剝皮案震驚了整個(gè)濱河市旺遮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盈咳,老刑警劉巖耿眉,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鱼响,居然都是意外死亡鸣剪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門丈积,熙熙樓的掌柜王于貴愁眉苦臉地迎上來西傀,“玉大人,你說我怎么就攤上這事桶癣∮倒樱” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵牙寞,是天一觀的道長饺鹃。 經(jīng)常有香客問我,道長间雀,這世上最難降的妖魔是什么悔详? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮惹挟,結(jié)果婚禮上茄螃,老公的妹妹穿的比我還像新娘。我一直安慰自己连锯,他們只是感情好归苍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著运怖,像睡著了一般拼弃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摇展,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天吻氧,我揣著相機(jī)與錄音,去河邊找鬼。 笑死盯孙,一個(gè)胖子當(dāng)著我的面吹牛鲁森,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播振惰,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼刀森,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了报账?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤埠偿,失蹤者是張志新(化名)和其女友劉穎透罢,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冠蒋,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡羽圃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抖剿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朽寞。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖斩郎,靈堂內(nèi)的尸體忽然破棺而出脑融,到底是詐尸還是另有隱情,我是刑警寧澤缩宜,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布肘迎,位于F島的核電站,受9級(jí)特大地震影響锻煌,放射性物質(zhì)發(fā)生泄漏妓布。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一宋梧、第九天 我趴在偏房一處隱蔽的房頂上張望匣沼。 院中可真熱鬧,春花似錦捂龄、人聲如沸释涛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枢贿。三九已至,卻和暖如春刀脏,著一層夾襖步出監(jiān)牢的瞬間局荚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留耀态,地道東北人轮傍。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像首装,于是被迫代替她去往敵國和親创夜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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