一,環境
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小時~
1
2
3
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
五,博客數據庫
首頁要知道
Django是一個基於MVC構造的框架,模型M,視圖V和控制器C。
但是在Django中,控制器接受用戶輸入的部分由框架自行處理,
所以 Django 裏更關注的是模型(Model)、模板(Template)和視圖(Views),稱爲 MTV模式。
它們各自的職責如下:
層次
職責
模型(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_name
class Classification(models.Model):
name = models.CharField(max_length=20)
def __unicode__(self):
return self.name
class 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 makemigrations
python manage.py migrate
第一次 同步數據庫會讓用戶輸入管理員帳號密碼
六,配置視圖
不多說了,打開nameblog/blog/views.py
from django.shortcuts import render
from blog.models import Article, Tag, Classification
from django.template import RequestContext
def 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/p_w_picpaths; 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 admin
from .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 [email protected]:yourproject/nameblog.git //連接遠程github項目
$ git push -u origin master //將本地項目更新到github項目上去
現在查看github上面的blog項目,
是不是發現已經將本地中的README文件更新上來了