完善Article表,增加分类,和详细页面

我们为一个web应用增加新功能时的步骤是:修改model.py,更新数据库,然后编写视图函数来处于http请求,接着修改模板用于显示内容。如果增加了新的模板,就要增加 新的url。

我们的Article表中目前就存了标题,文章内容,和创建时间,这肯定是远远不够的,现在我们要给Article表增加更多的内容~以下是改变后的内容,我们增加了修改时间,分类,和摘要,分类是作为一个外键。外键是一种一对多的形式,就是一篇文章对应一个分类,而一个分类下可以有多篇文章,我们也创建了另一个类别的表。

class Article(models.Model):
    title = models.CharField(‘标题‘, max_length=100)
    content = models.TextField(‘正文‘)
    create_time = models.DateTimeField(‘创建时间‘, auto_now_add=True)
    last_modified_time = models.DateTimeField(‘修改时间‘, auto_now=True)
    abstract = models.CharField(‘摘要‘, max_length=54, blank=True, null=True,
                                help_text="可选,如果为空摘取正文的前54个字符")
    category = models.ForeignKey(‘Category‘, verbose_name=‘分类‘,
                                 null=True,
                                 on_delete=models.SET_NULL)    def __unicode__(self):
        return self.title    class Meta:#Meta包含许多的选项,这里的ordering表示排序,‘-‘表示逆序,我们以创建时间排序,你也可以以修改时间排序
        ordering = [‘-create_time‘] 

class Category(models.Model):
    name = models.CharField(‘类名‘, max_length=20)
    create_time = models.DateTimeField(‘创建时间‘, auto_now_add=True)
    last_modified = models.DateTimeField(‘x修改时间‘, auto_now=True)    def __unicode__(self):
        return self.name

然后我们更新数据库:

python manage.py makemigrations

因为新增的修改时间没有提供默认值,在更新数据库的时候会提示你增加一个默认值,按照提示修改就可以了。

python manage.py migrate

接下来修改视图,因为我们增加了一个分类的表,我们要从数据库读取文章所有分类,所以我们在给index函数返回的字典增添一个条目:

#encoding:utf-8from django.shortcuts import renderfrom .models import Article, Category   #我们要先导入我们新增的这个表def index(request):
    article_list = Article.objects.all()
    category_list = Category.objects.all().order_by(‘name‘)    return render(request, ‘article/index.html‘, {‘article_list‘: article_list, ‘category_list‘:category_list})

我们打开后台,在项目目录下,有manage.py的目录下打开命令行,运行

python manage.py runserver

访问127.0.0.1:8000,我们发现并没有什么变化,我们进后台看下,访问127.0.0.1:8000/admin/

我们进入文章编辑界面,就会在最下面看到多了两个东东,一个是摘要,一个是分类,但是分类里面什么都木有,那我们怎么增添分类呢?只用把Category在admin后台注册一下就好~

from django.contrib import adminfrom .models import Article, Categoryfrom .forms import BlogForm#这个BlogForm是我们上个博客开头提到的pagedownclass BlogAdmin(admin.ModelAdmin):
    form = BlogForm
admin.site.register(Article, BlogAdmin)
admin.site.register(Category)

然后我们就可以创建条目并且给文章增加上条目了~

时间: 2024-10-21 15:35:36

完善Article表,增加分类,和详细页面的相关文章

ECSHOP在商品详细页面上获取该商品的顶级分类id和名称

在 goods.php 文件, 找到 $smarty->assign('goods', $goods); 在它上面增加下面代码: 方法一: $cat_arr = get_parent_cats($goods['cat_id']); foreach ($cat_arr AS $val) { $goods['topcat_id']=$val['cat_id']; $goods['topcat_name']=$val['cat_name']; } 方法二: $cat_arr = get_parent_

黑马程序员学习笔记_OC之给NSString增加分类

---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>.<a href="http://www.itheima.com"target="blank">.Net培训</a>.期待与您交流! ---------------------- 黑马程序员学习笔记_OC

表单,框架,样式表的分类及选择器基础

表单元素1.<from>代表表单,其中属性有action提交给你所设定的页面,method数据提交的方式(get显示提交有长度限制,post隐式提交). 2.文本的表示类型:1.文本框<input>其属性有type类型选择其中的text,valune是文本框的值,name是文本框的名称.2.<input>密码框,其中属性tybe选择password.3.隐藏域其tybe选择hidden.4!文本域用双标签<textarea>,他的值是写在开始和结束标签之间的

如何修改magento产品详细页面的栏目

magento默认模板里面的产品信息页面的布局是以两栏带右侧栏显示的,那么如何修改为两栏带左侧栏或者三栏.一栏的方式显示呢?下面教大家一种很简单的方法就可以实现.下面是默认的布局预览:修改成两栏带左侧栏后的效果:修改成三栏后的效果:修改成一栏效果: 这样的效果很容易实现的,首先你需打开catalog.xml文件1.3版本app > design > frontend > default > deault > layout > catalog.xml1.4版本app &g

7.3 制作样式表文件并和其他页面绑定

问题:大家发现前面应用模板的页面中存在的问题了吗?如上一节应用模板图3.图4和图5所示,是不是页面中有些字体过大.颜色搭配不合理.超链接样式极其难看.文本排列不够整齐等,那如何解决这些问题? 大家肯定想到了使用样式表,由于有多个页面甚至整个站点都要应用统一的样式,所以应该创建样式表文件,方便多个页面同时引用. 一.制作样式表 根据上一节图3.图4和图5所示的页面效果,我们应该设置哪些样式?其实,这也不难,你只要看到页面中哪里不美观,那么那里就得应用样式.所以根据上一节图3.图4和图5所示的不美观

为表增加一列属性(补充)

事情变得有意思了,上一篇花1小时撰写的"一分钟"文章,又引起了广泛的讨论,说明相关的技术大家感兴趣,挺好.第一次一篇技术文章的评论量过100,才知道原来"评论精选"还有100上限,甚为欣慰(虽然是以一种自己不愿看到的方式). <啥,又要为表增加一列属性?>的方案颇有争议: (1)版本号version + 扩展字段ext (2)用增加列的key+value方式扩充属性 有些评论,只能说"所谓夏虫,何以语冰"(作者要谦和,请删除).因自己

MySQL中大数据表增加字段,通过增加索引实现

MySQL中大数据表增加字段,通过增加索引实现 普通的添加字段sql ALTER TABLE `table_name` ADD COLUMN `num` int(10) NOT NULL DEFAULT 0 AFTER `addtime`; 普通的添加索引sql ALTER TABLE `table_name` ADD INDEX `num` (`num`) ; 但是线上的一张表如果数据量很大呢,执行加字段操作就会锁表,这个过程可能需要很长时间甚至导致服务崩溃,那么这样操作就很有风险了. 在网上

SqlServer给一个表增加多个字段语法

添加字段语法 alter table table_name add column_name +字段类型+ 约束条件 给一个表增加多个字段: use NatureData go alter table XunHu add MaleCount varchar(50) null, FemaleCount varchar(50) null, SubadultCount varchar(50) null, LarvaeCount varchar(50) null, TraceType varchar(50

用存储过程 给表增加序列与触发器

存储过程如下: create or replace procedure p_createseq(tablename in varchar2,key in varchar2) Authid Current_User --使用角色权限,否则无法创建序列或表 is strsql varchar2(500); t_key varchar2(500); begin --创建序列 strsql:='create sequence seq_'||tablename|| ' minvalue 1000 maxv