跟大佬学django-发布博客文章

Posted xiaxiaoxu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟大佬学django-发布博客文章相关的知识,希望对你有一定的参考价值。

发布博客文章

我们先用最简单的方式实现博客文章的发布,使用django默认的管理功能就可以发布文章。要使用此功能,必须先创建超级管理员。下面是创建超级管理员的方法,请记住自己使用的用户名和密码。

创建超级用户

[root@localhost mysite]# python3 manage.py createsuperuser

Username (leave blank to use ‘root‘): admin

Email address: admin@admin.com

Password:

Password (again):

Superuser created successfully.

 

用户名和密码:admin/xiaxiaoxu

 

运行服务器

[root@localhost mysite]# python3 manage.py runserver 0:8000

Performing system checks...

 

System check identified no issues (0 silenced).

October 20, 2019 - 06:01:05

Django version 1.10.1, using settings ‘mysite.settings‘

Starting development server at http://0:8000/

Quit the server with CONTROL-C.

 

注意:在linux下启动时,要把ip指向0.0.0.0,否则从windows上访问不了

 

浏览器访问http://172.20.10.6:8000/admin/,就可以打开如下图所示的界面

 技术图片

 

 

 

登录用户

 技术图片

 

 

 

Groups和Users是django在用户管理应用中默认的。单击users会看到当前项目的用户。

 

把BlogArticles类注册到admin中

我们打开./blog/admin.py,输入如下代码:

 

from django.contrib import admin
from .models import BlogArticles

admin.site.register(BlogArticles)

在代码中我们把BlogArticles类引入到当前环境,然后注册到admin中。

 

在调试状态下,如果没有新增加的文件,只是将原有文件修改了,则不需要重新启动django服务(如果django服务没有启动,请确保启动),然后打开浏览器,刷新页面,如下图所示

 技术图片

 

 

这时可以看到新注册的BLOG

 

单击Blog articles右侧的“Add”按钮可以添加博客文章,如下图所示。

技术图片

 

 

在这个页面中输入一片博客文章,点击右下角的SAVE按钮,该博客文章将被保存到数据库中,可以再次使用SQLiteSpy打开数据库,查看blog_blogarticles表的数据

技术图片

 

 

从数据库中能直观地看到刚才保存的文档。注意,在发布文章时选择xiaxiaoxu作为author,并且xiaxiaoxu在Users中的id是2,所以这里记录了它的id值,即author_id是2—这就是BlogArticles类中ForeignKey()属性的效果。

这里的author_id对应auth_user表中的数据:

 技术图片

 

 

为了后续操作需要,我们多发布几篇文章。

 

 

在./blog/models.py中使用了django.utils.timezone,因此需要安装一个模块pytz,用来提供市区数值。

 

安装命令:pip3 install pytz

 

安装完毕,重启服务。

 

 

增加列表页信息

在文章的列表页,可以看到所有已经发布的文章的标题,如下所示。

 技术图片

 

 

这样显示的列表页信息太单一。为了让列表页的信息丰富,还可以在./blog/admin.py中多写点东西,继续编辑./blog/admin.py,增加部分代码之后的内容如下。

 

./blog/admin.py:

 

from django.contrib import admin
from .models import BlogArticles

class BlogArticlesAdmin(admin.ModelAdmin):
    list_display = ("title", "author", "publish")
    list_filter = ("publish", "author")
    search_fields = ("title", "body")
    raw_id_fields = ("author",)
    date_hierarchy = "publish"
    ordering = [publish, author]

 

修改./blog/admin.py后进行保存,刷新浏览器,会呈现如下图所示的效果。

 技术图片

至于文件中BlogArticlesAdmin各个属性的含义,我们可以用控制变量法一次研究每个属性的含义,比如只保留第一个属性list_display,将其他属性都注释掉,看看页面效果,就知道它的含义了。

 

 

下面来让发布的文章能让别人看到

 

 

跟老齐学知识点:

什么是HTTP

访问网站经常要用到HTTP,HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是客户端(比如计算机的浏览器、网络爬虫程序)和服务器端(网站)请求和应答的标准(TCP),封装了Web服务的整个过程。通常,有客户端发起请求,建立到服务器指定端口(默认为80)TCP连接。服务器在指定端口监听客户端的请求,一旦受到,就像客户端返回状态信息(比如“HTTP/1.1 200”)和内容信息(如请求的文件、错误消息或者其他信息),这就是响应。简单地说,HTTP要做的事情如下。

请求(request):客户端到服务器端。

响应(response):服务器端到客户端。

HTTP/1.1协议共定义了8中请求方式,分别是:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE和CONNECT。注意这些请求方式的名称都是大写,不要用小写。

GET:向指定的服务器发出请求,主要用于读取信息并显示。

POST:向指定服务器提交数据,请求服务器进行处理(如提交表达或者上传文件)

随着技术的发展,现在另外一种协议正在被广泛使用—HTTPS,全程是Hyper Text Transfer Protocol Secure,比HTTP多了一个secure。前面提到了HTTP默认的端口是80,而HTTPS默认的端口是443。相比HTTP,HTTPS安全性更高,因为HTTP以明文方式封装信息,如果被某些抓包工具获得,很容易分析出其内容,而HTTPS以加密的方式传送信息,这也是它主键流行的原因。

 

什么是URL

要在客户端访问服务器端,需要知道访问哪个服务器(服务器的位置),这就是URL要做的事情。URL全程是(Uniform/Universal Resource Locator,翻译为“统一资源定位符”,俗称网页地址(网址)。)

 

有了URL,就标志着步入了网络时代。

 

URL的标准格式是:协议类型://服务器地址(必要时需加上端口号)/路径/文件名。

 

协议类型:可以是HTTP,也可以使HTTPS。

服务器地址:通常为域名,比如itdiffer.com,也可以是IP地址。如果是默认的80端口,则不需要写,否则需要写上端口。

路径:以“/”区别目录。对于GET请求方式,还可以用“?”发起参数,每个参数以“&”隔开,再以“=”分开参数名称与值。

文件名:如果有必要协商,优势可以省略,有服务器根据路径匹配响应程序文件。

 

本教程中的项目因为是在本地调试,所以可以使用http://域名:8080/path或者http://ip:8080/path的方式,读者可以通过修改本地的域名,将域名或者ip替换为自己喜欢的域名(linux系统修改/etc/hosts文件,windows系统可以修改system32/drivers/etc/host文件)

以上是关于跟大佬学django-发布博客文章的主要内容,如果未能解决你的问题,请参考以下文章

跟大佬学django-HTTPURL模型:ORM

Django学习之实现文章详情页面的跳转

Django搭建简易博客教程(01)-Django简介

自从学了 Flask,我就铁了心转向了 Django

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)