背景:自從今年回家過年后,來到公司給我轉了試用,我的學習效率感覺不如從前,而且剛步入社會我總是想要怎么想明白想清楚一些事,這通常會花掉,消耗我大量的精力,因為我想把我的生活管理規劃好了,而在it技術學習上就沒有了年前那股猛勁,從3月開始學習Django,到現在已經5個月了,期間有差不多1個月忙畢業論文,再加上回了趟家(打亂了學習節奏),Django的學習路程就顯的更加緩慢了,值得一提的事,我在Python學習上更深入了一層,之前學會的也就是Python基本語法,然后不斷的用if ,for ...寫了幾個腳本,而這次,我通過學習 廖雪峰 的Python 教程,對IO,進程線程,Json,正則,md5,GUI,網絡編程,郵件收發,訪問數據庫,等都有了大致了解,學習的時候很是認真的,但是練習是很少很少的,沒有需求和好的想法,很難讓我著手去寫些什么..
深入了解學習Python之后,首先發現了Python的強大,也知道了以后,未來,或者是不久將來馬上自己能用Python做些怎么樣的有趣的東西,甚至還能幫我賺點外快,然后我本著linux愛好者的心,開始了對 Git 的學習,同樣也是看的 廖雪峰 的教程,Git的學習并不是很難,練習幾下也就會了,當然我說的是基本的版本控制,然后我馬上轉入了,我一直想進入的 Github 大門,我覺得作為一個程序開放者,尤其是學習了開源的,沒有自己的Github 都不算入門,Github的強大太多太多,這里就不一一說了,已經跑題了!! 學習完github給電腦配置好ssh,又回到了Django學習中,于是心血來潮,有了這篇我認為很重要的博客,作為這一大段時間學習成果的一個簡單記錄.
Github官網https://github.com/
我的github https://github.com/fankcoder
對自己無語了,自己的吐槽技能真是+++
回來正題拉!!,正題是啥來著?! Django練習項目之搭建博客
一,環境
1.Python
2.Django
二,安裝
1.你的電腦沒有Python? 不用多說了坑人的Windows,送你友情連接 www.baidu.com
2.Django安裝,推薦先裝個pip吧,easyinstall也可以,然后終端下輸入:
pip install Django
強烈推薦用新的Django版本!!1.8.1現在夠新么?找的教程都是1.6.x的夠新新新了!!!
pip install Django==1.8.1
測試一下安裝成功否
終端下:
python
import django
django.VERSION
(1, 8, 1, 'final', 0) 成功~!
三,開始
1.創建博客項目
找個干凈的文件夾,終端下:
django-admin.py startPRoject nameblog
這里nameblog是示例,自己記得換哦
打開文件夾,或者cd nameblog/ 輸入ls
發現項目創建好了~
2.創建博客app
終端下:cd nameblog/ 剛才已經cd進去的同學這步省了
然后輸入:
python manage.py startapp blog
打開文件夾瞅一眼,發現多了個blog文件夾,
這時候blog項目app就創建好了~
2.簡單設置一下
打開nameblog/nameblog/settings.py
進行如下設置,也就是加上一條blog:
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog',)
順便換下Django默認語言把,你要是英文大神,請別鳥我,第二句是換時區,不換你就自個倒時差吧,好像永遠差8小時~
LANGUAGE_CODE = 'zh_CN'TIME_ZONE = 'Asia/Shanghai'
四,測試Django運行成功否
終端下輸入,
注意現在的終端目錄還應該是nameblog/下,而不是nameblog/nameblog下,請參考有manage.py的這層目錄
好的,終端下輸入:
python manage.py runserver
打開瀏覽器,
地址:127.0.0.1:8000或者localhost:8000
看到淡藍色,提示,Django工作了~
說明項目搭建成功~
如果 python manage.py runserver跑不起來
可能8000端口被占用了,輸入:
python manage.py runserver 8001
五,博客數據庫
首頁要知道
層次 | 職責 |
模型(Model),即數據存取層 | 處理與數據相關的所有事務: 如何存取、如何驗證有效性、包含哪些行為以及數據之間的關系等。 |
模板(Template),即表現層 | 處理與表現相關的決定: 如何在頁面或其他類型文檔中進行顯示。 |
視圖(View),即業務邏輯層 | 存取模型及調取恰當模板的相關邏輯。模型與模板之間的橋梁。 |
了解了Django先進的框架結構,就來一層一層的進行操作,
這里注意一下,我們并沒有配置數據庫,Django高級一點的版本會默認配置好,
數據庫默認是sqlite3,如果你的博客,網站有很多人訪問,sqlite3也夠用了,
如果非常多的人使用建議換為,MySQL,
配置是在settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }開始配置模型,首先打開模型文件,nameblog/blog/models.py
models.py是博客數據庫的,每個類都是數據庫中的一張表,
配置如下:
class Tag(models.Model): tag_name = models.CharField(max_length=20) create_time = models.DateTimeField(auto_now_add=True) def __unicode__(self): return self.tag_nameclass Classification(models.Model): name = models.CharField(max_length=20) def __unicode__(self): return self.nameclass Author(models.Model): name = models.CharField(max_length=30) email = models.EmailField(blank=True) website = models.URLField(blank=True) def __unicode__(self): return u'%s' % (self.name)class Article(models.Model): caption = models.CharField(max_length=30) subcaption = models.CharField(max_length=50,blank=True) publish_time = models.DateTimeField(auto_now_add=True) update_time = models.DateTimeField(auto_now = True) author = models.ForeignKey(Author) classification = models.ForeignKey(Classification) tags = models.ManyToManyField(Tag, blank=True) content = models.TextField()
我們要做博客app,就要寫文章,文章需要的一些基本信息,這里都涵蓋了,
標簽,分類,作者信息,發布時間等,也可以加入自己想要的表,
保存退出,
同步數據庫,在終端輸入下:
python manage.py syncdb # 進入 manage.py 所在的那個文件夾下輸入這個命令
注意:Django 1.7 及以上的版本需要用以下命令python manage.py makemigrationspython manage.py migrate第一次 同步數據庫會讓用戶輸入管理員帳號密碼
六,配置視圖
不多說了,打開nameblog/blog/views.py
from django.shortcuts import renderfrom blog.models import Article, Tag, Classificationfrom django.template import RequestContextdef blog_list(request): blogs = Article.objects.all().order_by('-publish_time') return render(request,'index.html',{"blogs":blogs})這里看到視圖函數返回index.html,我們不是還沒有創建html首頁嗎?對的!
七,創建模板首頁
模板在app中默認沒有這個文件夾,需要手動創建blog/templates/
*.html文件是要放在blog/templates/下
簡單寫點html歡迎代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>fank</title></head><body><h1>歡迎光臨xx的博客</h1></body></html>
但是這是靜態頁面還用Django搭建起來未必太Low了吧?
加上等下我們會發布的博客文章
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>fank</title></head><body><h1>歡迎光臨xx的博客</h1><div>{% for blog in blogs %} <div class="blog_body"> <div class="blog_title"><a href="/blog/detail/?id={{ blog.id }}">{{ blog.caption }}</a></div> <div class="blog_info"> <ul class="blog_info_list"> <li>分類:{{ blog.classification }}</li> <li>發表時間:{{ blog.publish_time|date:"Y-m-d H:i" }}</li> <li>標簽: {% for tag in blog.tags.all %} {{ tag.tag_name }} {% endfor %} </li> </ul> </div> <div class="blog_description"> {{ blog.content }} </div> </div>{% endfor %}</div></body></html>保存退出.
八,配置url
直到現在,我們啟動項目
python manage.py runserver
你會發現,開始萌萌噠Django歡迎界面,說好的博客app呢?!
想要訪問到網頁,需要配置Url
打開nameblog/nameblog/urls.py
配置:
urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^$','blog.views.blog_list',name='blog_list'),]
這時候,把項目跑起來
python manage.py runserver
你會發現,
歡迎光臨xx的博客
成功了~!
九,美化網頁
沒有CSS,js的網頁不是好網頁
創建blog/static/images; blog/static/css; blog/static/js
美化html,自己搞把,或者下載現成的模板,美化大家不一個品,這里就不上我的例子了
注意:靜態文件加載需要設置settings.py
STATIC_URL = '/static/'STATIC_ROOT = os.path.join(BASE_DIR,'collected_static')STATICFILES_DIRS = ( os.path.join(BASE_DIR), '/home/icgoo/pywork/fankblog/blog/static/',)STATICFILES_FINDERS = ( "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder",)
收集靜態文件,終端下:
python manage.py collectstatic
再次打開萌萌噠的首頁,讓人眼前一亮,有沒有?...
十,Django后臺
又人開始吐槽了,做了這么久的博客app,到現在一篇文章都木有啊,什么鬼!
Django給我們提供了一個強大的后臺管理,我們通過它來管理文章
打開blog/admin.py,沒有則新建
from django.contrib import adminfrom .models import Article admin.site.register(Article)
只需要這三行代碼,我們就可以擁有一個強大的后臺!
提示:urls.py中關于 admin的已經默認開啟
運行服務器,
python manage.py runserver
訪問 http://localhost:8000/admin/ 輸入設定的帳號和密碼
點擊 Articles,動手輸入 添加幾篇文章,
再訪問首頁
發現文章出現在首頁了~!!
十一,代碼托管到Github
確保目錄在nameblog/
$ git init //初始化
$ touch README
$ git add README //更新README文件
$ git commit -m 'first commit'//提交更新,并注釋信息“first commit”
$ git remote add origin git@github.com:yourproject/nameblog.git //連接遠程github項目
$ git push -u origin master //將本地項目更新到github項目上去
現在查看github上面的blog項目,
是不是發現已經將本地中的README文件更新上來了。
:) 恭喜!
新聞熱點
疑難解答