一、创建blog应用:
D:\Python36\Scripts\Djangos>python manage.py startapp blog

二、修改项目设置
将应用添加到项目的settings.py中:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'sign',
'blog',
]
为什么要做这一步,作用是什么?新建应用的时候Django为什么不自己直接添加进去呢?添加应用后,Django中有一系列约定,只有在INSTALLED_APPS中设置后,应用中的模型、静态文件、模板等才能正常工作。如果添加了一个Python包,只是把公用的部分提取出来,放到一个公用的目录中,那么这个目录不需要加入到INSTALLED_APPS中,因为对于Django而言它不是一个应用。
看一下DATABASES相关的设置:

默认使用的是sqlite3数据库,可以改成使用MySQL或PostgreSQL等。
二、编写模型代码
修改模型文件models.py写入以下内容:
from django.dbimport models
class Blog(models.Model):
title = models.CharField('标题',max_length=200)
author = models.ForeignKey(
'auth.User',on_delete=models.SET_NULL,null=True,verbose_name='作者'
)
content = models.TextField('内容')
def __str__(self):
return self.title
Blog类需要继承自models.Model类,这个类中有很多“魔法”操作,比如会给每个继承的子类添加一个DoesNotExist属性,进行数据库中数据和Python对象之间的转换操作等。
数据库中现在还没有Blog相关的数据表,运行下面的命令在数据库中创建出对应的表:
python manage.py makemigrations blog
这个命令会检查app blog中的模型的变更,会发现其中创建了一个Blog类,输出如下:
Migrations for 'blog':
blog\migrations\0001_initial.py:
- Create model Blog
执行migrate命令让migrations文件正式作用到数据库:

执行成功。
三、体验admin站点
1、接着需要先创建一个管理账号,Django中自带了用户认证系统,使用下面的命令来创建用户相关的数据表等:
D:\Python36\Scripts\Djangos>python manage.py migrate
2、首先需要创建一个管理员账号,用于系统登录:
D:\Python36\Scripts\Djangos>python manage.py createsuperuser
Username (leave blank to use 'administrator'): ******
Email address: ********@163.com
Password:
Password (again):
Superuser created successfully.
根据提示信息输入用户名和邮箱,输入两次密码就创建成功了。
密码必须得大于8位,不能是纯数字。
后台信息的设置则需要修改admin.py,添加了以下几行:
from django.contribimport admin
from blog.modelsimport Blog
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
pass
启动服务:python manage.py runserver
用浏览器访问:http://127.0.0.1:8000/admin/

输入用户名、密码,登录成功后如下图所示:

页面上的部分内容是英文的,如果想要显示成中文,需要修改settings.py:
将LANGUAGE_CODE ='en-us',修改成:LANGUAGE_CODE ='zh-hans';zh-hans指的是中文简体,zh-hant指的是中文繁体。
下图所示:

第一篇博客:


四、对admin站点进行简单定制
(1)修改admin.py添加一个list_display设置,前面没有做任何设置时,默认显示的是Blog类中的__str__方法返回内容,相当于list_display = ['__str__']:
from django.contribimport admin
from blog.modelsimport Blog
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
#list_display用于设置列表页面要显示的不同字段
list_display = ['title','author']
再次访问文章列表页,会显示“作者”一列。
(2)假如网站有一个需求,想要实现功能,即搜索文章标题或文章内容来查找对应的内容。同样很简单,使用search_fields来实现,代码如下:
@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
#list_display用于设置列表页面要显示的不同字段
list_display = ['title','author']
#参与搜索的字段列表
search_fields = ['title','content']
再次运行,结果如下:

图中多了一个搜索框,随后就可以通过文章的标题和内容来搜索相关记录。


网友评论