Django 入門例子2

前言

上次寫了第一個入門的小例子屏箍,今天呢,咋們來搭建一個博客網(wǎng)站胸哥,所以今天會學(xué)到django中的model涯竟,以及template模板。
上一篇地址

代碼

  1. 首先空厌, 我們在之前的根目錄mysite/下面新建一個app庐船,起名叫blog:

    python manage.py startapp blog
    一個項目是可以有很多個APP的喲

  2. 接下來我們創(chuàng)建一個實體類,首先進(jìn)入blog/models.py嘲更,在底部加入如下代碼:

    class Blog(models.Model): #繼承自models.Model
        title = models.CharField(max_length=20) #博客的標(biāo)題 最大長度設(shè)置為20個字符
        body = models.TextField() #博客的內(nèi)容
        timestamp = models.DateTimeField() #發(fā)表博客的日期及時間
    

    這就是我們的博客實體模型了筐钟,就是Java中的bean對象。到時候我們可以通過這個類對數(shù)據(jù)庫進(jìn)行訪問赋朦,而不需要寫SQL語句Bǔ濉!北发!我們這里使用的數(shù)據(jù)庫是默認(rèn)的sqlite3,可以在mysite/settings.py中看到喷屋。因為這個是python自帶的數(shù)據(jù)庫琳拨,所以不需要額外安裝。

  3. 接下來進(jìn)入mysite/settings.py屯曹,找到INSTALLED_APPS狱庇,加入'blog',結(jié)果如下所示

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',#也就是我們剛剛創(chuàng)建的blog文件夾惊畏,我們的blog是一個APP喲
    ]
    

    把blog加入到上面之后,django就知道要包含blog這個APP了密任,之后就可以通過Blog對象建表了颜启。

  4. 讓django幫我們自動生成Blog對應(yīng)的表!

    在根目錄執(zhí)行python manage.py makemigrations浪讳,這句話是告訴django缰盏,你對models做了一些改變,在這里淹遵,我們是增加了一個Blog類口猜。

    然后輸入python manage.py migrate,完成建表透揣。

    通過輸出的信息你會發(fā)現(xiàn)建立了很多表济炎,因為上面有很多APP,里面有各種表喲辐真。我們的只是其中一個罷了须尚。

    Applying blog.0001_initial... OK 這句話就是建立我們的表啦~

  5. 創(chuàng)建一個后臺管理員,管理我們的各種models侍咱,這里也就是管理我們的Blog表耐床。

    執(zhí)行:python manage.py createsuperuser,然后按照提示輸入你要注冊的用戶名放坏,郵箱以及設(shè)置密碼就可以了咙咽。

  6. 將我們的Blog注冊到管理員,讓管理員能夠訪問到淤年。

    打開blog/admin.py钧敞,加入下面幾行代碼:

    from .models import Blog #從當(dāng)前目錄的models.py中導(dǎo)入Blog類
    
    # Register your models here.
    admin.site.register(Blog)
    

    這樣我們就可以在后臺訪問到Blog了

  7. 啟動服務(wù) python manage.py runserver

  8. 瀏覽器輸入: localhost:8000/admin

    然后輸入你剛剛注冊的用戶名和密碼,接下來你就可以看到如下畫面啦


    管理員界面

    上面的Blog就是我們剛剛注冊的喲麸粮,我們點擊add溉苛,然后在頁面中輸入我們的內(nèi)容:


    輸入內(nèi)容

    然后點擊SAVE即可保存到數(shù)據(jù)庫。

    所以以后你可以很方便的管理你的數(shù)據(jù)庫中的表弄诲,只需要調(diào)用admin.site.register()方法就可以在后臺查看到你的表了愚战。

  9. 接下來,我們在blog/文件夾下面新建一個目錄齐遵,叫templates寂玲,用來存放html文件。

    這時候梗摇,我們的文件目錄應(yīng)該是這樣的:


    目錄結(jié)構(gòu)
  10. 在網(wǎng)頁中展示我們的Blog:

    首先我們要在blog/templates目錄下新建一個blog_list.html文件:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>My Blog</title>
    </head>
    <body>
    
        {% for blog in blog_list %}
            <div>
            <h1>{{ blog.title }}</h1>
            <p>{{ blog.body }}</p>
            <span>{{ blog.timestamp|date:'Y-M-D' }}</span>
            </div>
        {% endfor %}
    
    </body>
    </html>
    

    上面的網(wǎng)頁在django中是稱作模板拓哟,在里面可以寫很多動態(tài)的元素,由django渲染后生成html伶授,例如 {% for blog in blogList %} {% endfor %}是一個迭代器断序,中間的元素會被迭代很多次流纹,所以可以動態(tài)生成html標(biāo)簽。{{ blog.title }}這個是取blog的title屬性的值违诗。

  11. 我們要在views.py中取出數(shù)據(jù)庫中的Blog對象漱凝,然后交給這個html:

    打開blog/views.py,加入如下代碼:

    from .models import Blog #導(dǎo)入Blog類
    
    # Create your views here.
    def blog_list(request): #方法不能漏掉一個參數(shù)
        blog_list = Blog.objects.all()#獲取數(shù)據(jù)庫中Blog的所有對象
        return render(request, 'blog_list.html', {'blog_list': blog_list}, )#把數(shù)據(jù)交給blog_list.html進(jìn)行渲染
    

render()的第一個參數(shù)是request,第二個是html模板诸迟,第三個是字典茸炒,也就是我們要傳遞到html的參數(shù),html訪問的是字典的key亮蒋。所以你現(xiàn)在可以回過頭看看我們上面編寫的html了扣典!

  1. 最后讓瀏覽器能夠找到我們的頁面,在mysite/urls.py中進(jìn)行配置:

    from django.conf.urls import include, url
    from django.contrib import admin
    from blog.views import blog_list #增加這行  導(dǎo)入blog_list方法
    urlpatterns = [
        url(r'^polls/', include('polls.urls')),
        url(r'^admin/', admin.site.urls),
        url(r'^blog/',blog_list)#增加這行 用blog_list方法渲染
    ]
    

相信大家看過上一篇的對上面的代碼應(yīng)該不陌生了慎玖。

  1. 啟動服務(wù)進(jìn)行訪問:

    瀏覽器輸入:http://localhost:8000/blog/

    就可以看到剛剛用admin增加的Blog對象了V狻!趁怔!


    效果圖

后記

這篇文章只是走馬觀花的過一遍流程而已湿硝,讓我們再理清一下思路:

  1. 新建了一個app,要在mysite/settings.py中進(jìn)行注冊
  2. 實體模型寫在models.py中润努,一個實體類就對應(yīng)了數(shù)據(jù)庫的一張表关斜。
  3. 在views.py中我們可以通過實體類對數(shù)據(jù)庫進(jìn)行訪問,不需要寫SQL語句铺浇。常用的獲取對象的方法我們下一篇再講
  4. views.py獲取的對象可以通過字典的形式傳到template中痢畜,然后通過模板語言進(jìn)行訪問,動態(tài)生成html
  5. 通過配置mysite/urls.py鳍侣,將URL鏈接與方法綁定起來丁稀。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市倚聚,隨后出現(xiàn)的幾起案子线衫,更是在濱河造成了極大的恐慌,老刑警劉巖惑折,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件授账,死亡現(xiàn)場離奇詭異,居然都是意外死亡惨驶,警方通過查閱死者的電腦和手機(jī)白热,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粗卜,“玉大人屋确,你說我怎么就攤上這事。” “怎么了乍恐?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長测砂。 經(jīng)常有香客問我茵烈,道長,這世上最難降的妖魔是什么砌些? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任呜投,我火速辦了婚禮,結(jié)果婚禮上存璃,老公的妹妹穿的比我還像新娘仑荐。我一直安慰自己,他們只是感情好纵东,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布粘招。 她就那樣靜靜地躺著,像睡著了一般偎球。 火紅的嫁衣襯著肌膚如雪洒扎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天衰絮,我揣著相機(jī)與錄音袍冷,去河邊找鬼。 笑死猫牡,一個胖子當(dāng)著我的面吹牛胡诗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淌友,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼煌恢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了亩进?” 一聲冷哼從身側(cè)響起症虑,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎归薛,沒想到半個月后谍憔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡主籍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年习贫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片千元。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡苫昌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出幸海,到底是詐尸還是另有隱情祟身,我是刑警寧澤奥务,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站袜硫,受9級特大地震影響氯葬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜婉陷,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一帚称、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秽澳,春花似錦闯睹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妄讯,卻和暖如春所刀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背捞挥。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工浮创, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砌函。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓斩披,卻偏偏與公主長得像,于是被迫代替她去往敵國和親讹俊。 傳聞我的和親對象是個殘疾皇子垦沉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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