-
通过排序来选择最新的五篇文章
top5_article_list = Article.objects.order_by('-article_id')[:5] paginator = Paginator(all_article, 3) page_num = paginator.num_pages page_article_list = paginator.page(page) if page_article_list.has_next(): next_page = page + 1 else: next_page = page if page_article_list.has_previous(): previous_page = page - 1 else: previous_page = page return render(request, 'blog/index.html', { 'article_list': page_article_list, 'page_num': range(1, int(page_num) + 1), 'curr_page': page, 'previous_page': previous_page, 'next_page': next_page, 'top5_article_list': top5_article_list })
查看全部 -
实现分页按钮
设计?page= 的url
def get_index_page(request): page = request.GET.get('page') if page: page = int(page) else: page = 1 all_article = Article.objects.all() paginator = Paginator(all_article, 3) page_num = paginator.num_pages page_article_list = paginator.page(page) if page_article_list.has_next(): next_page = page + 1 else: next_page = page if page_article_list.has_previous(): previous_page = page - 1 else: previous_page = page return render(request, 'blog/index.html', { 'article_list': page_article_list, 'page_num': range(1, int(page_num) + 1), 'curr_page': page, 'previous_page': previous_page, 'next_page': next_page })
查看全部 -
在文章详情页增加前后篇文章的跳转按钮
html改造
def get_detail_page(request, article_id): curr_article = None previous_article = None next_article = None previous_index = 0 next_index = 0 all_article = Article.objects.all() for index, article in enumerate(all_article): if index == 0: previous_index = 0 next_index = index + 1 elif index == len(all_article) - 1: previous_index = index - 1 next_index = index else: previous_index = index - 1 next_index = index + 1 if article.article_id == article_id: curr_article = article previous_article = all_article[previous_index] next_article = all_article[next_index] break return render(request, 'blog/detail.html', { 'curr_article': curr_article, 'previous_article': previous_article, 'next_article': next_article })
查看全部 -
使用url来对指定文章的详情页进行访问
html加入a标签
是点击可以跳转链接
查看全部 -
使用模板系统实时的进行渲染
将数据通过
return render(request, 'blog/detail.html', { 'curr_article': curr_article })
返回给页面进行显示
查看全部 -
django的模板系统
网页逻辑和网页视图应该分开设计
{{变量}}
{%for x in list %},{% endfor %}
{% if %},{% else %}, {% endif %}
查看全部 -
使用bootstrap实现静态博客页面
简单易上手
栅格系统
将页面分为12份
查看全部 -
使用django的模板来渲染页面
进一步完成博客界面
查看全部 -
def article_content(request): article = Article.objects.all()[0] title = article.title brief_content = article.brief_content content = article.content article_id = article.article_id publish_date = article.publish_date return_str = 'title:%s,brief_content:%s,content:%s,article_id:%s,publish_date:%s' % (title, brief_content, content, article_id, publish_date) return HttpResponse(return_str)
返回博客内容
查看全部 -
django admin是自带的后台管理工具
自己在admin中注册模板
from .models import Article admin.site.register(Article)
让后台管理显示标题分辨不同文章
def __str__(self): return self.title
查看全部 -
django shell
可以用于小范围的debug
python manage.py shell
from blog.models import Article
a=Article()
a.title='Test shell'
a.brief_content='hello shell'
a.content='hello world hello django hello shell'
a.save()
print(Article.objects.all()[0].title)
查看全部 -
博客包括
标题
摘要
内容
IntegerField
TextField
DateTimeField
AutoField自增
primary_key主键
创建模型
class Article(models.Model): article_id=models.AutoField(primary_key=True) title=models.TextField() brief_content=models.TextField() content=models.TextField() publish_date=models.DateTimeField(auto_now=True)
命令生成迁移文件
python manage.py makemigrations
命令导入文件
python manage.py migrate
查看全部 -
视图层与数据库中间是模型层
python与数据库表之间转换
屏蔽数据库之间的差异
专注于业务逻辑的开发
查看全部 -
模型层的定义
如何创建一个文章的模型层
了解django shell
django admin模块了解
查看全部 -
from django.http import HttpResponse # Create your views here. def hello_world(request): return HttpResponse('hello world')
urlpatterns=[ path('hello_world',blog.views.hello_world) ]
完成项目路由,和应用路由对视图函数的绑定
查看全部
举报