- 我们为一个web应用增加新功能时的步骤是:修改model.py,更新数据库,然后编写视图函数来处于http请求,接着修改模板用于显示内容。如果增加了新的模板,就要增加 新的url。
- 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
然后我们更新数据库:
因为新增的修改时间没有提供默认值,在更新数据库的时候会提示你增加一个默认值,按照提示修改就可以了。
接下来修改视图,因为我们增加了一个分类的表,我们要从数据库读取文章所有分类,所以我们在给 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 的目录下打开命令行,运行
访问 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)
然后我们就可以创建条目并且给文章增加上条目了~
来源: