pipenv shel
提示:接下来我们要新建一个名为posts的APP,该APP用于展示公告信息。我们首先要做的就是新建posts应用,并配置好它的template、views和url,让该页面能正常显示(第2-8步骤同实践二、三的home和about应用)
2. 新建一个posts应用
python manage.py startapp posts
3.在my_project/settings.py文件中添加posts应用
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','home', 'about','posts',#新增内容 ]
4.在templates中添加posts.html文件,打开posts.html文件并添加如下代码:
5.更新posts/views.py文件,代码如下:
# posts/views.py from django.views.generic import TemplateViewclass PostsPageView(TemplateView):template_name='posts.html'
6.更新my_project和posts中的urls.py文件
(1)在posts中添加urls.py文件,并添加如下代码:
from django.urls import path from . import views urlpatterns = [path('',views.PostsPageView.as_view(),name='posts'), ]
(2)更新my_project/urls.py文件,代码如下:
from django.contrib import admin from django.urls import path, include urlpatterns = [path('admin/', admin.site.urls),path('', include('home.urls')) ,path('about/', include('about.urls')) ,path('posts/', include('posts.urls'))#新加代码 ]
7.更新base.html文件,将posts应用的超链接也放进导航页面
<!-- 页眉的导航栏将会被子模板继承 --><nav class="navbar navbar-expand-sm bg-light"> <div class="container-fluid"><ul class="navbar-nav"><li class="nav-item"><a class="nav-link" href="{% url 'home' %}">主页</a></li><!-- 新加内容 --><li class="nav-item"><a class="nav-link" href="{% url 'posts' %}">信息公告</a></li><li class="nav-item"><a class="nav-link" href="{% url 'about' %}">关于我们</a></li></ul></div></nav>
8.运行服务器,点击“信息公开”超链,你将看到:
python manage.py runserver
提示:现在我们已经把urls和templates配置好了,接下来我们将加入数据库
9.打开posts/models.py文件,并添加如下代码:
from django.db import models
# Create your models here. class Post(models.Model):text = models.TextField()
解释:这里我们新建了一个数据库模型Post,它只包含一个字段text,text的类型为TextField()。Django的其他模型类型和字段列表请参考链接:Django模型数据类型和字段列表
10. 创建数据库迁移文件
python manage.py makemigrations
当执行该语句后,项目中的“migrations”文件夹会自动生成名为“0001_initial.py”的python文件。这个文件中包含初始的数据模型信息。
结果如下:
11. 创建或更新数据表(根据上一步骤生成的迁移文件)
python manage.py migrate
结果如下:
12. 创建管理员
在终端输入以下代码创建管理员,有了管理员账号后我们才能登录仅管理页面。
提示:请输入简短的密码,输入密码时终端不会显示你输入的信息,请记牢密码。
python manage.py createsuperuser
13. 启动本地服务器
python manage.py runserver
14.打开后台管理页面的链接( http://127.0.0.1:8000/admin ),并用刚创建的管理员账号密码登录到后台管理页面。
15.更新posts/admin.py文件
from django.contrib import admin from .models import Post # Register your models here. admin.site.register(Post)
提示:该操作将Post数据模型注册到管理页面,即让Post表在管理页面上显示出来。再次刷新管理页面,此时Post表已经添加到管理页面了。
16.点击“+Add”按钮,添加一则或或多则公告,并保存。
17.更改公告的名称
此时公告的名称为“Post object(1)”,为了便于后期查询,我们不适用默认的名称。
更新posts/models.py中的代码如下:
from django.db import models# Create your models here. class Post(models.Model):text = models.TextField()def __str__(self):return self.text[:50]
再次刷新管理页面,此时显示效果如下:
提示:接下来我们需要让数据库中的公告信息显示在posts.html页面中
18.更新posts/views.py文件
# posts/views.py from django.views.generic import ListView #引用ListView视图 from .models import Postclass PostsPageView(ListView):model=Post #添加模型template_name='posts.html'
19.更新templates/posts.html文件
{% extends 'base.html' %} {% block content %} <h1>信息公告页面</h1> <ul>{% for post in object_list %}<li>{{post}}</li>{% endfor %} </ul> {% endblock content %}
20.刷新信息公告页面,效果如下:
此时,我们已经能从数据库中提取信息并呈现在页面上了,请在管理页面中多添加几条公告,查看效果。