之前我们把主页的页面给写好了,然后我们就可以开始写介绍页面和详情页面了,这时候就需要先新建立一个app名字叫blog,然后我们到settings.py里去注册一下,然后我们就可以开始写数据库格式了,既然是保存博客文章的数据库,那么就需要标题,时间,演示图片,正文这几个类型,创建一个类叫Blog
class Blog(models.Model):
title = models.CharField(verbose_name='标题', max_length=50)
date = models.DateField(verbose_name='时间')
image = models.ImageField(default='default.png', verbose_name='演示图片', upload_to='mage/')
text = models.TextField(verbose_name='正文')
然后我们去admin.py里注册一下,注意这里的admin.py什么的都要在blog文件夹里找,不能到之前的文件去,当然注册什么的还是得到主文件去,在admin.py里输入以下代码
from . import models
admin.site.register(models.Blog) //就和之前的一样
然后就可以去把数据库给迁移了,具体操作之前就有,我这边就不多说了,然后还是老操作,到views.py里去映射网页还是老样子
def blog(request):
text = Blog.objects.all()
return render(request, 'blog.html', context={'text': text})
然后在blog里新建文件夹叫templates,里面放blog.html等一系列网页代码,然后在网页中调用,这个也不多说了,主要是要提一句,我们正常的介绍页面需要显示出一些文本的内容但是不是所有的,所以我们就需要在models.py里设定一个函数来显示正文中的一些内容,并且在内容后面添加…
def short_text(self):
return self.text[:12] + '.....'
然后只要在html里调用这个函数就可以了
<div>{{ foo.short_text }}</div>
下面就差不多完成了介绍的页面,如下图(添加模板之后的)
不过还有一点,我们需要去主程序中注册一下,不过这次和原来的有点不一样,打开我们的urls.py,输入下面的代码
path('blog/', include('blog.urls')),
这样我们就默认了在blog文件夹里查找urls.py这个文件,然后用这个文件里的内容来映射到主文件,然后我们需要在blog文件夹创建新的py文件urls.py然后在里面输入下面的代码
from django.urls import path
from . import views
urlpatterns = [
path('', views.blog),
]
这样我们就把blog/的网页链到了blog.html,基本的页面就完成了
那么我们现在就有新的需求了我要点击其中一篇博客,然后就会跳转到新的详情页面,那我们就要在urls.py里注册新的网页
path('<int:blog_id>/', views.text1),
这个就是如果满足blog_id的规范就进入blog/blog_id这一的页面,然后调用views.text1函数来显示,这个blog_id是一个比较好玩的东西打开migrations文件夹里面有一个0001_initial文件,里面就保存的之前的数据库数据类型,其中就有了id这个类型我们就是使用这个id来判断我们所点击后是进入哪一个页面,然后因为只是详情页面嘛,所以我们就可以直接使用之前的数据库,那么我们就不需要更改models.py的内容,只需要去更改views.py的映射内容
from django.shortcuts import render,get_object_or_404
def text1(request, blog_id):
text2 = get_object_or_404(Blog, pk=blog_id)
#text2 = Blog.objects.all()[blog_id-1]
return render(request, 'blog_text.html',{'text': text2})
我们可以先导入这个包,然后使用get_object_or_404()这个函数来获取到目前所点击到的页面(当然,传入需要两个参数不然就没办法判断了,不过好像可以直接用数组的方式选定到我们需要的)。然后其他的就和原来一样了,就是将一个数组改成一个一个变量,然后只要在blog_text.html里将这些东西进行展示接下来,具体演示如下(套用模板且有小改动)
具体的内容我也都放到GitHub上了,需要的自取 https://github.com/xipinfan/port (写完睡觉咯)