最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python采用Django開發(fā)自己的博客系統(tǒng)

 更新時(shí)間:2021年08月24日 09:31:42   作者:Marksinoberg  
這篇文章主要為大家詳細(xì)介紹了Python采用Django開發(fā)自己的博客系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

好久之前就想做一下自己的博客系統(tǒng)了,但是在網(wǎng)上查了查好像是需要會(huì)一些Node.js的相關(guān)知識,而且還要安裝辣么多的庫什么的,就不想碰了。但是我遇到了Django這么一款神器,沒想到我的博客系統(tǒng)就這么建立起來了。雖然是最基礎(chǔ)的類型。但是也算是成功了,這篇博客比較適合對Django有了一定了解的童鞋,如果是新手的話,建議先看一下django的基礎(chǔ)知識點(diǎn)再來做實(shí)驗(yàn),這樣效率更高!
好了,話不多說,開始吧。

搭建框架

•創(chuàng)建項(xiàng)目及應(yīng)用

搭建框架的意思,就是安裝Django以及做好相關(guān)的配置。因?yàn)槲沂窃赑yCharm下進(jìn)行創(chuàng)建的,所以工具代替我做了很多事情。但是底層也無非是下面幾行代碼:

創(chuàng)建一個(gè)Django項(xiàng)目,名為MyDjango

django-admin startproject MyDjango

創(chuàng)建一個(gè)Django應(yīng)用,名為MyBlog。這里應(yīng)該注意的是應(yīng)用隸屬于項(xiàng)目的子集。通俗的來說應(yīng)用文件夾是作為項(xiàng)目文件夾的子集而存在的。

django-admin startapp MyBlog

•創(chuàng)建數(shù)據(jù)庫及底層模型

我這里簡單的以默認(rèn)的sqlite3數(shù)據(jù)庫作為了我的博客系統(tǒng)的數(shù)據(jù)庫了,當(dāng)然你也可以自己制定需要的數(shù)據(jù)庫,一般來說sqlite3都能滿足需求。在setting.py里面可以這樣進(jìn)行設(shè)置。

# Database

# https://docs.djangoproject.com/en/1.9/ref/settings/#databases

DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.sqlite3',
 'NAME': 'MyBlog.db',
 'USER':'',
 'PASSWORD':'',
 'HOST':'',
 'PORT':'',
 }
}

建好了數(shù)據(jù)庫,接下來就是模型的創(chuàng)建了。因?yàn)槲覄?chuàng)建的是博客系統(tǒng),所以必不可少的要發(fā)布關(guān)于博客的內(nèi)容,于是需要有標(biāo)題,內(nèi)容,發(fā)布時(shí)間這些屬性,詳情如models.py文件

from __future__ import unicode_literals
from django.contrib import admin
from django.db import models


# create the blog model

class BlogPost(models.Model):
 title = models.CharField(max_length=150)
 body = models.TextField()
 timestamp = models.DateTimeField()

 def __unicode__(self):
 return self.title

由于需要管理員對發(fā)布的博客進(jìn)行管理,所以我們要對發(fā)布的博客設(shè)置一個(gè)管理模型

# set the admin page for BlogPost

class BlogPostAdmin(admin.ModelAdmin):
 list_display = ('title','timestamp')


# register the model (especially important

admin.site.register(BlogPost)

所以整個(gè)models.py文件里面就應(yīng)該是這樣的了。

from __future__ import unicode_literals
from django.contrib import admin
from django.db import models


# create the blog model

class BlogPost(models.Model):
 title = models.CharField(max_length=150)
 body = models.TextField()
 timestamp = models.DateTimeField()

 def __unicode__(self):
 return self.title



# set the admin page for BlogPost

class BlogPostAdmin(admin.ModelAdmin):
 list_display = ('title','timestamp')


# register the model (especially important

admin.site.register(BlogPost)

接下來,就是同步一下數(shù)據(jù)庫和模型之間的聯(lián)系了。如果不做同步操作的話,就很有可能報(bào)出
django.db.utils.OperationalError: unable to open database file
而且這里也是很重要的一個(gè)環(huán)節(jié)。那就是關(guān)于Django版本的問題,我之前就在這上面栽過一次。

django < 1.7 時(shí):
    python manage.py syncdb

django > 1.7 時(shí):
    python manage.py makemigrations
    python manage.py migrate

完善MVC模式

其實(shí)前面的步驟而言,我們已經(jīng)是完成了model這個(gè)模塊的功能了,接下來就是做好視圖的映射就可以了。
 •V(views.py)視圖層

我們需要在這個(gè)文件里面定義好底層的邏輯處理。這決定著要返回給用戶一個(gè)什么樣的response。至于采用哪種渲染方式,大家就不要在這上面浪費(fèi)不必要的時(shí)間了。render_to_response就足夠了。

# create the view for blog show

def myBlogs(request):
 blog_list = BlogPost.objects.all()
 return render_to_response('BlogTemplate.html',{'blog_list':blog_list})

這里面用到了模板文件,還傳給了模板一個(gè)列表類型的參數(shù),這些我們待會(huì)再敘。

 •C(controller)urls.py

可以說這個(gè)文件將Django各部分松耦合的功能銜接到了一起,完成了整個(gè)項(xiàng)目的運(yùn)轉(zhuǎn)的非核心的核心了,是關(guān)于如何映射的邏輯的處理。接下來我們就將我們的博客系統(tǒng)設(shè)置一下吧。

from django.conf.urls import url
from django.contrib import admin
from MyBlog.views import *

urlpatterns = [
 url(r'^admin/', admin.site.urls),
 url(r'^myBlogs/$',myBlogs),
]

關(guān)于如何映射,我的上一篇文章里面有詳細(xì)的介紹,PyCharm開發(fā)Django基礎(chǔ)配置。有興趣的可以參考一下。好了,這次我們在完成了admin管理員用戶的設(shè)置之后,就可以運(yùn)行我們的程序了。

python manage.py runserver 

出現(xiàn)了:

Performing system checks...

System check identified no issues (0 silenced).
June 05, 2016 - 11:39:27
Django version 1.9.6, using settings 'MyDjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

這時(shí)就可以在瀏覽器中輸入
http://127.0.0.1:8000/admin,登陸成功后可以點(diǎn)擊下面的Blog Posts編輯博文了。然后點(diǎn)擊SAVE 按鈕,就可以發(fā)布我們的博客。接下來在瀏覽器中輸入
http://127.0.0.1:8000/myBlogs/ 訪問我們的博客系統(tǒng)了。

這樣就實(shí)現(xiàn)了我們的博客系統(tǒng)的建立了。但是由于沒有添加樣式,所以看起來不是很好看,所以我們要添加以下模板的樣式。

模板配置

接著剛才的繼續(xù),關(guān)于模板,這里面可謂是有著很深的設(shè)計(jì)哲學(xué)。了解過的大家肯定都會(huì)有感觸,我就不多說了。
接下來就為我們的博客系統(tǒng)設(shè)置一下模板吧。
 •父模板base.html
按照django對模板的繼承設(shè)置,我們可以制作一個(gè)父模板。如下:

<!DOCTYPE html>
<html lang="zh">
<head>
 <meta charset="UTF-8">
 <title>標(biāo)題</title>
</head>
<style type="text/css">
 body{
 color: #efd;
 background: #BBBBBB;
 padding: 12px 5em;
 margin:7px;
 }
 h1{
 padding: 2em;
 background: #675;
 }
 h2{
 color: #85F2F2;
 border-top: 1px dotted #fff;
 margin-top:2em;
 }
 p{
 margin:1em 0;
 }
</style>
<body>
<h1>XX博文</h1>
<h3>小生不才,但求簡約!</h3>
{% block content %}
{% endblock %}
</body>
</html>

•然后就是子模板BlogTemplate.html

{% extends "base.html" %}
 {% block content %}
 {% for post in blog_list %}
 <h2>{{ post.title }}</h2>
 <p>{{ post.timestamp }}</p>
 <p>{{ post.body }}</p>
 {% endfor %}
 {% endblock %}

需要注意的就是模板中的模板標(biāo)簽以及模板變量都應(yīng)該與views.py文件對應(yīng)的函數(shù)中的字典變量相一致,否則django雖然不會(huì)報(bào)錯(cuò),但也是不會(huì)顯示數(shù)據(jù)的。

接下來刷新一下,輸入http://127.0.0.1:8000/admin/

點(diǎn)擊add按鈕,開始添加你的博文吧。

添加博文

點(diǎn)擊保存

然后在瀏覽器中輸入
http://127.0.0.1:8000/myBlogs/.你就可以看到你的博客列表了,如圖

博客列表

大家可能已經(jīng)看到了,問題就出在點(diǎn)擊標(biāo)題沒有進(jìn)入到相關(guān)的詳情頁面,那是因?yàn)檫€沒有添加這個(gè)功能呢。(^__^) 嘻嘻……

總結(jié)

今天一起做了一個(gè)簡單的博客系統(tǒng),雖然外觀看起來并不是很好看,但是內(nèi)容什么的差不多就是這樣了。還有很多的地方需要完善。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 對matplotlib改變colorbar位置和方向的方法詳解

    對matplotlib改變colorbar位置和方向的方法詳解

    今天小編就為大家分享一篇對matplotlib改變colorbar位置和方向的方法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python OpenCV對圖像像素進(jìn)行操作

    Python OpenCV對圖像像素進(jìn)行操作

    大家好,本篇文章主要講的是Python OpenCV對圖像像素進(jìn)行操作,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • python中使用psutil查看內(nèi)存占用的情況

    python中使用psutil查看內(nèi)存占用的情況

    今天小編就為大家分享一篇python中使用psutil查看內(nèi)存占用的情況,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的方法

    使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的方法

    數(shù)據(jù)結(jié)構(gòu)是指相互之間存在著一種或多種關(guān)系的數(shù)據(jù)元素的集合和該集合中數(shù)據(jù)元素之間的關(guān)系組成。這篇文章主要介紹了使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的相關(guān)知識,需要的朋友可以參考下
    2019-12-12
  • Python遠(yuǎn)程視頻監(jiān)控程序的實(shí)例代碼

    Python遠(yuǎn)程視頻監(jiān)控程序的實(shí)例代碼

    這篇文章主要介紹了Python遠(yuǎn)程視頻監(jiān)控程序的實(shí)例代碼,需要的朋友可以參考下
    2019-05-05
  • Python利用Diagrams繪制漂亮的系統(tǒng)架構(gòu)圖

    Python利用Diagrams繪制漂亮的系統(tǒng)架構(gòu)圖

    Diagrams  是一個(gè)基于Python繪制云系統(tǒng)架構(gòu)的模塊,它能夠通過非常簡單的描述就能可視化架構(gòu)。本文將利用它繪制漂亮的系統(tǒng)架構(gòu)圖,感興趣的可以了解一下
    2023-01-01
  • NumPy矩陣乘法的實(shí)現(xiàn)

    NumPy矩陣乘法的實(shí)現(xiàn)

    本文主要介紹了NumPy矩陣乘法的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python中的字符串內(nèi)部換行方法

    python中的字符串內(nèi)部換行方法

    今天小編就為大家分享一篇python中的字符串內(nèi)部換行方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python Des加密解密如何實(shí)現(xiàn)軟件注冊碼機(jī)器碼

    Python Des加密解密如何實(shí)現(xiàn)軟件注冊碼機(jī)器碼

    這篇文章主要介紹了Python Des加密解密如何實(shí)現(xiàn)軟件注冊碼機(jī)器碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Pycharm快速安裝OpenCV的詳細(xì)操作步驟

    Pycharm快速安裝OpenCV的詳細(xì)操作步驟

    Pycharm中使用OpenCV,其實(shí)也就是用Python語言調(diào)用OpenCV,下面這篇文章主要給大家介紹了關(guān)于Pycharm快速安裝OpenCV的詳細(xì)操作步驟,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07

最新評論

靖安县| 安溪县| 临邑县| 安仁县| 安龙县| 武隆县| 阿坝县| 汝阳县| 额尔古纳市| 南木林县| 阿瓦提县| 永川市| 措美县| 梧州市| 上虞市| 乐东| 东至县| 广河县| 微山县| 孝感市| 蒙城县| 南溪县| 元朗区| 虹口区| 呼伦贝尔市| 饶河县| 大城县| 万源市| 景洪市| 中西区| 北票市| 兴文县| 内丘县| 江川县| 沙湾县| 鹿泉市| 林周县| 丰顺县| 汤原县| 九龙县| 安吉县|