django快速搭建blog

本操做的環境:css

===================html

macpython

python 2.7web

Django 1.11.4shell

===================數據庫

 

 

 建立工程                                                                                                          django

 

eclipse中建立testBlog工程項目:session

> django-admin.py startproject testBlog

工程目錄結構:數據結構

 

 

manage.py ----- Django項目裏面的工具,經過它能夠調用django shell和數據庫等。app

settings.py ---- 包含了項目的默認設置,包括數據庫信息,調試標誌以及其餘一些工做的變量。

urls.py ----- 負責把URL模式映射到應用程序。

  

建立blog應用                                                                                                   

 

在testBlog目錄下建立blog應用

 
 
>cd /Users/Zd/Desktop/GitHub/BigDataTrain/Python/testBlog/src
$ python manage.py startapp blog

 

初始化admin後臺數據庫                                                                                                

 

  python 自帶SQLite數據庫,Django支持各類主流的數據庫,這裏爲了方便推薦使用SQLite,若是使用其它數據庫請在settings.py文件中設置。

切換到mysite建立數據庫:

複製代碼
e$ python manage.py syncdb

C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)

 
 

Operations to perform:
Synchronize unmigrated apps: staticfiles, messages
Apply all migrations: admin, contenttypes, auth, sessions
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
Running migrations:
Rendering model states... DONE
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying sessions.0001_initial... OK

 
 

You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'fnngj'):    用戶名(默認當前系統用戶名)
Email address: fnngj@126.com     郵箱地址
Password:     密碼
Password (again):    重複密碼
Superuser created successfully.

複製代碼

 

 

設置admin應用                                                                                    

  

  admin 是Django 自帶的一個後臺管理系統。

一、添加blog應用,打開mysite/mysite/settings.py 文件:

複製代碼
# Application definition

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)
複製代碼

 在列表末尾,添加blog 應用

 

二、在咱們建立django項目時,admin就已經建立,打開mysite/mysite/urls.py文件:

複製代碼
from django.conf.urls import include, url
from django.contrib import admin

from blog.views import index

 

urlpatterns = [

    url(r'^admin/',admin.site.urls),

    url(r'^index/$',index),

]

複製代碼

 

三、啓動django容器

複製代碼
D:\pydj\mysite>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
October 04, 2015 - 20:56:45
Django version 1.8.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
複製代碼

  

四、訪問後臺應用

http://127.0.0.1:8000/admin

 

 輸入用戶、密碼,用戶名密碼爲第一次建立數據庫時建立的。回想「設置數據庫」時的設置。

 

 

設計Model(即設計數據庫表)                                  

 

一、設計model

  如今咱們打開blog目錄下的models.py文件,這是咱們定義blog數據結構的地方。打開mysite/blog/models.py 文件進行修改:

複製代碼
from django.db import models
from django.contrib import admin

# Create your models here.
class BlogsPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

admin.site.register(BlogsPost)
複製代碼

 

二、 再次初始化數據庫

複製代碼
D:\pydj\mysite>python manage.py makemigrations blog
Migrations for 'blog':
  0001_initial.py:
    - Create model BlogsPost

D:\pydj\mysite>python manage.py syncdb
C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py:24: RemovedInDjango19Warning: The syncdb command will be removed in Django 1.9
  warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning)

Operations to perform:
  Synchronize unmigrated apps: staticfiles, messages
  Apply all migrations: admin, blog, contenttypes, auth, sessions
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying blog.0001_initial... OK
複製代碼

 

 

三、再次runserver啓動服務,訪問admin後臺,建立文章。

  登錄成功選擇add 建立博客

輸入博客標題,正文、日期時間、點擊save 建立博客。

 

 

 

設置admin 的BlogsPost界面                                                              

 

  打開mysite/blog/models.py 文件,作以下修改:

複製代碼
from django.db import models
from django.contrib import admin

# Create your models here.
class BlogsPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

class BlogPostAdmin(admin.ModelAdmin):
    list_display = ('title','timestamp')
    
admin.site.register(BlogsPost,BlogPostAdmin)
複製代碼

 

建立BlogPostAdmin類,繼承admin.ModelAdmin父類,以列表的形式顯示BlogPost的標題和時間。

 

 

建立blog的公共部分

從Django的角度看,一個頁面具備三個典型的組件:

一個模板(template):模板負責把傳遞進來的信息顯示出來。

一個視圖(view):視圖負責從數據庫獲取須要顯示的信息。

一個URL模式:它負責把收到的請求和你的試圖函數匹配,有時候也會向視圖傳遞一些參數。

 

 

建立模板                                                                                                  

 

在blog項目下建立templates目錄(mysite/blog/templates/),在目錄下建立模板文件index.html,內容以下:

<!-- 注意是views.py中index函數傳過來的參數 -->

{% for post in blog_list %}

    <h2>{{ post.title }}</h2>
    <p>{{ post.timestamp }}</p>
    <p>{{ post.body }}</p>
{% endfor%}

 

 

建立視圖函數                                                                                          

 

打開mysite/blog/views.py文件:

複製代碼
#coding=utf-8
from django.shortcuts import render
from blog.models import BlogsPost
from django.shortcuts import render_to_response

# Create your views here.
def index(request):
    blog_list = BlogsPost.objects.all()
    return render_to_response('index.html',{'blog_list':blog_list})
複製代碼

blog_list = BlogPost.objects.all() :獲取數據庫裏面所擁有BlogPost對象

render_to_response()返回一個頁面(index.html),順帶把數據庫中查詢出來的全部博客內容(blog_list)也一併返回。

 

 

建立blog的URL模式                                                                             

 

在mysite/urls.py文件裏添加blog的url:

複製代碼
#coding=utf-8
from django.conf.urls import patterns, include, url
from django.contrib import admin

from blog.views import index

 

urlpatterns = [

    url(r'^admin/',admin.site.urls),

    url(r'^index/$',index),

]

複製代碼

 

再次啓動服務($ python manage.py runserver),訪問blog應用(http://127.0.0.1:8000/index/

頁面以下:

固然,讀者能夠繼續到admin後臺添加blog,從而刷新這個頁是否顯示新添加的blog。

 

 

添加樣式                                                                                                    

 

建立基礎模板

在mysite/blog/templates目錄裏建立hello.html的模板:

複製代碼
<html>
      <style type="text/css">
        body{color:#efd;background:#453;padding:0 5em;margin:0}
        h1{padding:2em 1em;background:#675}
        h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em}
        p{margin:1em 0}
      </style>
     
      <body>

        <h1>小姑娘blog</h1>

        <h3>腳踏實地,仰望星空</h3>

        {% block content %}

        {% endblock %}

      </body>
</html>
複製代碼

 

修改index.html模板,讓它引用hello.html模板和它的「content」塊。

複製代碼
{% extends "base.html" %}
  {% block content %}
      {% for post inblog_list %}
      <h2>{{  post.title }}</h2>
      <p>{{ post.timestamp | date:"1,F jS"}}</p>
      <p>{{ post.body }}</p>
      {% endfor %}
  {% endblock %}
複製代碼

再次刷新博客頁面:

http://127.0.0.1/index/   

  請系統的學習django web框架,而後在此基礎上作更多的擴展,開發本身真正的blog 。

相關文章
相關標籤/搜索