av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

利用Python Django實(shí)現(xiàn)簡(jiǎn)單博客系統(tǒng)

瀏覽:31日期:2022-06-20 10:19:55
第一節(jié) - 基礎(chǔ)1. 簡(jiǎn)單的導(dǎo)覽圖,學(xué)會(huì)不迷路

利用Python Django實(shí)現(xiàn)簡(jiǎn)單博客系統(tǒng)

對(duì) Django 的評(píng)價(jià):借用李清照的《鷓鴣天 桂花》來(lái)表達(dá),

暗淡輕黃體性柔。情疏跡遠(yuǎn)只香留。何須淺碧深紅色,自是花中第一流。梅定妒,菊應(yīng)羞。畫闌開(kāi)處冠中秋。騷人可煞無(wú)情思,何事當(dāng)年不見(jiàn)收。

Django makes it easier to build better Web apps more quickly and with less code.

容易上手,開(kāi)發(fā)速度快 囊括了網(wǎng)站開(kāi)發(fā)中的用戶管理,內(nèi)容管理,網(wǎng)站地圖,RSS等常用的插件 安全性強(qiáng),解決了 SQL 注入,跨站攻擊等問(wèn)題 應(yīng)用廣泛2. 基本操作介紹 安裝:pip install Django 創(chuàng)建項(xiàng)目:django-admin startproject mysite 運(yùn)行項(xiàng)目:python manage.py runserver 創(chuàng)建應(yīng)用:python manage.py startapp blog3. 命令簡(jiǎn)單介紹 django-admin.py :django 的任務(wù)管理命令行工具 manage.py :對(duì)django-admin 的簡(jiǎn)單封裝,同樣可以實(shí)現(xiàn)命令行操作(最好對(duì)于該文件不要修改,也不要?jiǎng)h除)4. mysite:所建項(xiàng)目的管理功能目錄 setting.py :項(xiàng)目初始化配置,可以針對(duì)整個(gè)項(xiàng)目進(jìn)行有關(guān)參數(shù)的配置,比如數(shù)據(jù)庫(kù),添加應(yīng)用等 urls.py :url 的配置表文件,主要是將url映射到應(yīng)用程序上。可以是某個(gè)應(yīng)用中的urls.py 文件,也可以是某個(gè)具體的視圖函數(shù)。被稱之為 URLconf,是 Django 一個(gè)非常強(qiáng)大的特性。 wsgi.py :web server gateway interface 的縮寫。wsgi.py 定義了我們所創(chuàng)建的項(xiàng)目都是 wsgi 應(yīng)用。5. blog:我們創(chuàng)建的項(xiàng)目之一 admin.py :自定義 Django 管理工具,比如設(shè)置在管理界面能夠管理的項(xiàng)目,或者重新定義與系統(tǒng)管理有關(guān)的類對(duì)象,向管理功能增加新的內(nèi)容。 apps.py : 對(duì)應(yīng)用的配置,比如為管理功能提供一個(gè)適合的應(yīng)用名稱 migrations:存儲(chǔ)應(yīng)用數(shù)據(jù)的表結(jié)構(gòu)的指令,可以修改和創(chuàng)建數(shù)據(jù)庫(kù),從而子 models.py 模型類和數(shù)據(jù)庫(kù)表之間遷移 models.py : 應(yīng)用的數(shù)據(jù)模型 test.py : 編寫測(cè)試文檔 views.py : 用戶保存各種請(qǐng)求的函數(shù)或者類。如果編寫的是函數(shù),則稱之為基于函數(shù)的視圖,如果編寫的是類,則稱之為基于類的視圖。6. db.sqlite3 : 默認(rèn)的數(shù)據(jù)庫(kù)7. 網(wǎng)站配置:mysite/setting.py DEBUG:開(kāi)發(fā)的時(shí)候設(shè)置為 True。可以顯示具體的報(bào)錯(cuò)信息。 ALLOWED_HOSTS:在 DEBUG 為 True 的時(shí)候,值可以為空。在部署到生產(chǎn)環(huán)境的時(shí)候,需要把主域名填寫到這里,才能通過(guò)域名訪問(wèn)到本網(wǎng)站 INSTALLED_APPS: 所有的應(yīng)用只有寫到這里才會(huì)生效。 DATABASES: 配置數(shù)據(jù)庫(kù)。默認(rèn)為 sqlite LANGUAGE_CODE: 設(shè)置姓名的語(yǔ)言。漢語(yǔ)設(shè)置為 ‘zh-hans’ TIME_ZONE: 設(shè)置時(shí)區(qū),通常東八。 設(shè)置為:‘Aisa/Shanghai第二節(jié) - 博客開(kāi)發(fā)

默認(rèn)已經(jīng)創(chuàng)建好的 django 的項(xiàng)目和應(yīng)用,并將應(yīng)用注冊(cè)到項(xiàng)目中

1. 編寫博客的數(shù)據(jù)模型類

設(shè)計(jì)數(shù)據(jù)庫(kù)和表結(jié)構(gòu)是做網(wǎng)站的基礎(chǔ)。

利用Python Django實(shí)現(xiàn)簡(jiǎn)單博客系統(tǒng)

在 ./blog/model.py 中編寫如下類

from django.db import modelsfrom django.contrib.auth.models import User# Create your models here.from django.utils import timezoneclass BlogArticles(models.Model): title = models.CharField(max_length=300) author = models.ForeignKey(User, related_name=’blog_posts’, null=True, on_delete=models.SET_NULL) body = models.TextField() publish = models.DateTimeField(default=timezone.now) class Meta:ordering = (’-publish’, ) def __str__(self):return self.title

創(chuàng)建model 參考參數(shù):

一、字段1、models.AutoField自增列= int(11)如果沒(méi)有的話,默認(rèn)會(huì)生成一個(gè)名稱為 id 的列,如果要顯示的自定義一個(gè)自增列,必須將給列設(shè)置為主鍵 primary_key=True。2、models.CharField字符串字段必須 max_length 參數(shù)3、models.BooleanField布爾類型=tinyint(1)不能為空,Blank=True4、models.ComaSeparatedIntegerField用逗號(hào)分割的數(shù)字=varchar繼承CharField,所以必須 max_lenght 參數(shù)5、models.DateField日期類型 date對(duì)于參數(shù),auto_now =True則每次更新都會(huì)更新這個(gè)時(shí)間;auto_now_add 則只是第一次創(chuàng)建添加,之后的更新不再改變。6、models.DateTimeField日期類型 datetime同DateField的參數(shù)7、models.Decimal十進(jìn)制小數(shù)類型= decimal必須指定整數(shù)位max_digits和小數(shù)位decimal_places8、models.EmailField字符串類型(正則表達(dá)式郵箱)=varchar對(duì)字符串進(jìn)行正則表達(dá)式9、models.FloatField浮點(diǎn)類型= double10、models.IntegerField整形11、models.BigIntegerField長(zhǎng)整形integer_field_ranges ={’SmallIntegerField’:(-32768,32767),’IntegerField’:(-2147483648,2147483647),’BigIntegerField’:(-9223372036854775808,9223372036854775807),’PositiveSmallIntegerField’:(0,32767),’PositiveIntegerField’:(0,2147483647),}12、models.IPAddressField字符串類型(ip4正則表達(dá)式)13、models.GenericIPAddressField字符串類型(ip4和ip6是可選的)參數(shù)protocol可以是:both、ipv4、ipv6驗(yàn)證時(shí),會(huì)根據(jù)設(shè)置報(bào)錯(cuò)14、models.NullBooleanField允許為空的布爾類型15、models.PositiveIntegerFiel正Integer16、models.PositiveSmallIntegerField正smallInteger17、models.SlugField減號(hào)、下劃線、字母、數(shù)字18、models.SmallIntegerField數(shù)字?jǐn)?shù)據(jù)庫(kù)中的字段有:tinyint、smallint、int、bigint19、models.TextField字符串=longtext20、models.TimeField時(shí)間 HH:MM[:ss[.uuuuuu]]21、models.URLField字符串,地址正則表達(dá)式22、models.BinaryField二進(jìn)制23、models.ImageField圖片24、models.FilePathField文件二、字段參數(shù)1、null=True數(shù)據(jù)庫(kù)中字段是否可以為空2、blank=Truedjango的 Admin 中添加數(shù)據(jù)時(shí)是否可允許空值3、primary_key = False主鍵,對(duì)AutoField設(shè)置主鍵后,就會(huì)代替原來(lái)的自增 id 列4、auto_now 和 auto_now_addauto_now 自動(dòng)創(chuàng)建---無(wú)論添加或修改,都是當(dāng)前操作的時(shí)間auto_now_add 自動(dòng)創(chuàng)建---永遠(yuǎn)是創(chuàng)建時(shí)的時(shí)間5、choicesGENDER_CHOICE = ((u’M’, u’Male’),(u’F’, u’Female’),)gender = models.CharField(max_length=2,choices = GENDER_CHOICE)6、max_length7、default默認(rèn)值8、verbose_nameAdmin中字段的顯示名稱9、name|db_column數(shù)據(jù)庫(kù)中的字段名稱10、unique=True不允許重復(fù)11、db_index = True數(shù)據(jù)庫(kù)索引12、editable=True在Admin里是否可編輯13、error_messages=None錯(cuò)誤提示14、auto_created=False自動(dòng)創(chuàng)建15、help_text在Admin中提示幫助信息16、validators=[]17、upload-to2. 生成數(shù)據(jù)庫(kù)遷移文件&創(chuàng)建數(shù)據(jù)表

# 命令行執(zhí)行# 創(chuàng)建數(shù)據(jù)庫(kù)表遷移文件python manage.py makemigrations# 查看遷移文件python manage.py sqlmigrate blog 0001

然后會(huì)發(fā)現(xiàn)在migrations文件夾下生成了以0001開(kāi)頭的py文件,在命令行會(huì)輸出我們的建表語(yǔ)句(sql)

# 生成數(shù)據(jù)表python manage.py migrate

可以在 navicate 中連接 db.sqlite 進(jìn)行數(shù)據(jù)的查看。

3. 創(chuàng)建超級(jí)管理員

python manage.py createsuperuser

跟著步驟就可以了,創(chuàng)建超級(jí)管理員的賬號(hào)和密碼。一定牢記嗷~

啟動(dòng)項(xiàng)目后訪問(wèn) http://127.0.0.1:8000/admin/然后就可以進(jìn)入頁(yè)面啦

頁(yè)面中的 Groups 和 Users 是 Django 在用戶管理應(yīng)用中默認(rèn)的。

4. 發(fā)布博客文章

我們登陸進(jìn)來(lái)之后沒(méi)有找到發(fā)布文章的地方,為什么呢?

接下來(lái)就需要我們對(duì) ./blog/admin.py 文件做修改了。

from django.contrib import adminfrom .models import BlogArticles# 將該類BlogArticles注冊(cè)到admin中admin.site.register(BlogArticles)

再次返回我們的 http://127.0.0.1:8000/admin/ 就可以進(jìn)行文章的添加了。

5. 顯示博客信息

我們寫好的文章如果想讓別人看到,如何做呢?

利用Python Django實(shí)現(xiàn)簡(jiǎn)單博客系統(tǒng)

在templates目錄下創(chuàng)建一個(gè)文件base.html 和一個(gè)blog文件夾,里面有 title.html , content.html 文件

文件內(nèi)容如下:

# base.html<!DOCTYPE html><html lang='zh-cn'><head> <meta http-equiv='X-UA-Compatible' content='IE=Edge'> <meta charset='utf-8'> <meta name='viewport' content='width=device-width, initial-scale=l'> <title>{% block title %}{% endblock %}</title> <link rel='stylesheet' rel='external nofollow' > <link rel='stylesheet' rel='external nofollow' ></head><body><div class='container'> {% block content %} {% endblock %}</div></body><script src='http://libs.baidu.com/jquery/2.0.0/jquery.min.js'></script></html># title.html{% extends 'base.html' %}{% block title %} 博客標(biāo)題{% endblock %}{% block content %} <div class='row text-center vertical-middle-sm'><h1>小北的博客</h1> </div> <div class='row'><div class='col-xs-12 col-mo-8'> <ul>{% for blog in blogs %} <li><a href='http://m.4tl426be.cn/bcjs/{{ blog.id }}' rel='external nofollow' >{{ blog.title }}</a> </li>{% endfor %} </ul></div><div class='col-xs-6 col-mo-4'> <h2>廣告</h2> <p>和我一起學(xué)python</p></div> </div>{% endblock %}# content.html{% extends 'base.html' %}{% block title %} 博客內(nèi)容{% endblock %}{% block content %} <div class='row text-center vertical-middle-sm'><h1>{{ article.title }}</h1> </div> <div class='row'><div class='col-xs-12 col-mo-8'> <div><p>{{ article.author.username }}</p><p>{{ publish }}</p><p>{{ article.body }}</p> </div></div><div class='col-xs-6 col-mo-4'> <h2>廣告</h2> <p>和我一起學(xué)python</p></div> </div>{% endblock %}

一定要在 templates 下創(chuàng)建,這是Django 默認(rèn)的存放本應(yīng)用所需模版的目錄

圖為示例結(jié)構(gòu)

利用Python Django實(shí)現(xiàn)簡(jiǎn)單博客系統(tǒng)

在./blog/views.py 中編寫視圖函數(shù)

from django.shortcuts import renderfrom .models import BlogArticles# Create your views here.def blog_title(request): blogs = BlogArticles.objects.all() return render(request, 'blog/title.html', {'blogs': blogs})def blog_aritcle(request, article_id): article = BlogArticles.objects.get(id=article_id) pub = article.publish return render(request, 'blog/content.html', {'article': article, 'publish': pub})

在url中注冊(cè)路由地址

在 blog/urls.py 中

from django.conf.urls import urlfrom . import viewsfrom django.urls import pathfrom blog.views import *urlpatterns = [ path(’title’, blog_title, name=’blog_title’), path(’<int:article_id>’, blog_aritcle, name=’blog_aritcle’),]

在當(dāng)前項(xiàng)目下的urls.py 中

from django.contrib import adminfrom django.urls import pathfrom django.conf.urls import url, includeurlpatterns = [ path(’admin/’, admin.site.urls, name=’admin’), path(’blog/’, include(’blog.urls’)),]

然后頁(yè)面就可以訪問(wèn)了,可以查看文章列表頁(yè)和詳情頁(yè)。

到此這篇關(guān)于利用Python Django實(shí)現(xiàn)簡(jiǎn)單博客系統(tǒng)的文章就介紹到這了,更多相關(guān)Django實(shí)現(xiàn)博客系統(tǒng)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 视频一区二区三区中文字幕 | 精品区| 国产日韩久久 | 91福利网| 久久中文字幕一区 | 久久在线 | 精品久久国产 | 欧美成人猛片aaaaaaa | 一级黄色毛片免费 | 人人射人人草 | 欧美综合精品 | 国产日韩精品一区 | 久久国产区 | 中文字幕日韩一区 | 亚洲精品一区二区三区中文字幕 | 久久国产亚洲精品 | 日韩免费网站 | 欧美日韩精品中文字幕 | 日韩成人影院在线观看 | 日韩精品一区二区三区中文在线 | 久久久蜜臀国产一区二区 | 成人性生交大免费 | 日韩欧美成人一区二区三区 | 成人免费在线播放视频 | 久久这里只有 | 91小视频在线 | 国产69久久精品成人看动漫 | 日韩国产中文字幕 | 九九热精品免费 | 色综合久久天天综合网 | 欧美日韩视频在线第一区 | 亚洲国产精品精华素 | 亚洲视频欧美视频 | 国产美女视频一区 | 成人免费看黄 | 久久久99精品免费观看 | 欧美片网站免费 | 蜜桃av鲁一鲁一鲁一鲁 | аⅴ资源新版在线天堂 | 国产视频中文字幕 | 美国黄色一级片 |