Python Django个人网站搭建3-创建superuser并向数据库中添加数据,改写视图

2021-12-14 12:21:20 浏览数 (1)

作者: zifanwang  发布于2020-05-07

1.创建superuser

上一章说到浏览器已经打印出hello world了 我们需要后台拥有数据,不过不需要我们手动向数据库添加,django内置了一个后台管理工具。 在控制台输入如下代码创建superuser

代码语言:javascript复制
python manage.py createsuperuser

依次输入用户名密码,邮箱什么的可以随便填 (密码输入是不可见的,必须手动输入,不能复制,输入密码时光标不会动。):

代码语言:javascript复制
C:mysite>python manage.py createsuperuser
System check identified some issues:

WARNINGS:
article.ArticlePost.created: (fields.W161) Fixed default value provided.
        HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use `django.utils.timezone.now`
Username: root
Email address:
Password:
Password (again):
Superuser created successfully.

C:mysite>

可以看见成功创建了superuser

2. 将ArticlePost注册到后台中

打开article/admin.py,写入以下代码:

代码语言:javascript复制
from django.contrib import admin
#导入ArticlePost
from .models import ArticlePost

# 将ArticlePost注册到admin中
admin.site.register(ArticlePost)

这样后台就注册好了。

3. 熟悉django后台并添加数据

在创建完superuser后我们可以在浏览器中输入 http://127.0.0.1:8000/admin/ 后看到如下界面:

输入用户名和密码后进入后台:

可以看到网站界面是英文的,可以在mysite/settings.py中进行中文设置: 修改LANGUAGE_CODETIME_ZONE为:

代码语言:javascript复制
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'

网站界面就变成中文的了,并且时间用的是上海时间了。红框内就是刚刚添加的数据表:

点击进入后点击右上角的增加按钮进行数据的添加

我们可以添加多条数据,这里我添加了三条:

4. 改写视图函数

改写article/views.py中的article_list函数:

代码语言:javascript复制
from django.shortcuts import render

from django.http import HttpResponse
from .models import ArticlePost

# 视图函数
def article_list(request):
    # 取出所有博客文章
    articles = ArticlePost.objects.all()
    # 需要传递给模板对象
    context = {'articles': articles}
    # render函数载入模板,并返回context对象
    return render(request, 'article/list.html', context)

render中: article/list.html代表模板位置 ,context:传入模板的对象。

5. 编写模板

在根目录下创建模板文件夹templates, 在templates中再新建article文件夹代表是article app的模板, 再创建一个html文件list.html 并且需要告诉django模板的位置,修改 mysite/settings.py中的TEMPLATES下的DIRS如下:

代码语言:javascript复制
TEMPLATES = [
   {
       'BACKEND': 'django.template.backends.django.DjangoTemplates',
       'DIRS': [os.path.join(BASE_DIR, 'templates')],
       'APP_DIRS': True,
       'OPTIONS': {
           'context_processors': [
               'django.template.context_processors.debug',
               'django.template.context_processors.request',
               'django.contrib.auth.context_processors.auth',
               'django.contrib.messages.context_processors.messages',
           ],
       },
   },
]

并在list.html中添加如下代码:

代码语言:javascript复制
{% for article in articles %}
   <p>{{ article.title }}</p>
{% endfor %}

用浏览器打开 http://127.0.0.1:8000/article/list/ 可以看到成功显示了三篇文章:

0 人点赞