作者: 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_CODE和TIME_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/ 可以看到成功显示了三篇文章: