用Django写博客(三)编写views

Django搭建个人博客之编写博客文章的Model模型 写在前面 Django 框架主要关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。 它们各自的职责如下: 层次 职责 模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。 模板(Template),即业务逻辑层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。 – – 视图(View),即表现层 存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。 简单来 阅读详情
接上篇,现在将数据库里面的内容反映到页面上去,我们就大功告成了,

在urls.py中配置映射到特定的处理方法中去。


我的blog.core.urls.py:

urlpatterns = patterns('',
    (r'root/(?P<path>.*)$',
    'django.views.static.serve',
    {'document_root':
    'D:/Aptana Studio Workspace/blog/views/temp'}),
    (r'^essay/(?P<eid>\d+)/$',
    'blog.core.views.essay_details'),
    (r'^search/$','blog.core.views.search'),
    (r'^leavemsg/(?P<eid>\d+)/$',
    'blog.core.views.leave_comment'),
    (r'^(?P<pageNo>\d+)/(?P<etype>\d+)/$',
    'blog.core.views.index'),
    (r'^latest/feed/$', LatestEntriesFeed()),
    (r'^','blog.core.views.index'),
)

#view.py上面有比较详细的注释

from django.shortcuts import render_to_response,get_object_or_404
from blog.core.models import Essay,EssayType,Archive,Comment
from django.core.paginator import Paginator
import datetime
from django.db.models import Q
#欢迎页,pageNo=None,etype=None这些都是从urls正则中读取的
#param如果没有就是None
def index(request,pageNo=None,etype=None,keyword=None):
    try:
        #文章分页后的页数
        pgNo=int(pageNo)
    except:
        pgNo=1
    try:
        etype=int(etype)
    except:
        etype=None  
    if etype:
        #查询该类别的文章,exclude表示not in或者!=  
        datas=Essay.objects.all().
        filter(eType=etype).
        exclude(title='welcome')  
    elif keyword:
        #根据关键字查询,title__contains
        #表示Sql like %+keyword+%
        #Q对象表示Sql关键字OR查询
        datas=Essay.objects.all().
        get(Q(title__contains=keyword)
        |Q(abstract__contains=keyword))
        .exclude(title='welcome')
    else:
        #查询所有文章
        datas=Essay.objects.all().exclude(title='welcome')
    #最近的5篇文章
    recentList=datas[:5]
    #数据分页
    paginator = Paginator(datas, 10)
    if pgNo==0:
        pgNo=1
    if pgNo>paginator.num_pages:
        pgNo=paginator.num_pages
    curPage=paginator.page(pgNo)
    #返回到mian.html模板页
    return render_to_response('main.html',{
            'page':curPage,
            'essay_type':EssayType.objects.all(),
            'pcount':paginator.num_pages,
            'recent':recentList,
            'archives':Archive.objects.all(),
            'welcome':Essay.objects.filter(title='welcome')[0]})


#文章详细信息
def essay_details(request,eid=None):
    #返回文章详细信息或者404页面
    essay=get_object_or_404(Essay,id=eid)
    recentList=Essay.objects.all()[:5]
    #新用户的Session
    if request.session.get('e'+str(eid),True):
        request.session['e'+str(eid)]=False
        #这里可以用一个timer实现,浏览次数保存在内存中,
        #timer定期将浏览次数提交到数据库
        #文章浏览次数+1
        essay.view_count=essay.view_count+1
        essay.save()
    return render_to_response('details.html',{
              'essay':essay,
              'essay_type':EssayType.objects.all(),
              'archives':Archive.objects.all(),
              'date_format':
     essay.pub_date.strftime('%A %B %d %Y').split(),
              'recent':recentList
                                 })


#根据关键字来搜索文章   
def search(request):
    if request.method == 'POST':
        #从POST请求中获取查询关键字
        key=request.POST.get('keyword',None)
        return index(request,keyword=key)
    else:
        return index(request)
   


#存储用户留言信息
def leave_comment(request,eid=None):
    if request.method == 'POST' and eid:
        uname=request.POST.get('uname',None)
        content=request.POST.get('comment',None)
        email=request.POST.get('email',None)
        #不为空   
        if uname and content and email:
            comment=Comment()
            comment.uname=uname
            comment.content=content
            comment.email=email
            comment.pub_date=datetime.datetime.now()
            comment.save()
        return index(request)
    return index(request)
现在已经大功告成了



如果需要rss订阅功能 请看这里的介绍


用Django写博客(四)编写Rss订阅





Django搭建个人博客之如何编写文章 编写视图函数 打开article/views.py,增加文章详情页面的视图函数article_detail(): article/views.py ... # 文章详情 def article_detail(request, id): # 取出相应的文章 article = ArticlePost.objects.get(id=id) # 需要传递给模板的对象 context = { 'article': article } # 载入模板,并返回context对象 阅读详情

相关推荐

Django搭建个人博客:编写博客文章的Model模型

Django 框架主要关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。 它们各自的职责如下: 层次 职责 模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。 模板(Template),即业务逻辑层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。 视...

weixin_43217710的博客 3351

Django2 - 编写urls,views,models

编写views views:作为MVC中的C,接收用户的输入,调用数据库Model层和业务逻辑Model层,处理后将处理结果渲染到V层中去。 polls/views.py: 1 2 3 4 5 fromdjango.httpimportHttpResponse # Create your views he...

lunco的博客 514

【项目管理】第8章 项目整合管理 --知识点整理

制定项目章程: 第一步,旨在明确项目的目标、范围、关键里程碑等关键信息,为项目的后续工作奠定基础。制订项目管理计划: 在项目章程的基础上,进一步详细规划项目的执行过程,包括时间、成本、质量、风险等方面的管理计划。指导与管理项目执行: 按照项目管理计划执行项目,同时监控项目的进展,确保项目按照计划进行。监控项目工作: 对项目的执行情况进行持续监控,及时发现并解决问题,确保项目目标的实现。

weixin_42081167的博客 1592

vue项目中api、router、views三大内容如何书写

1.三大内容存放的内容: api:与后端接口对接 router:路由,点击导航栏,进行内容跳转 views:显示的内容 2.api文件夹 书写增删改查: import request from '@/utils/request' // @ 符号在vue.config.js中配置,表示src 路径的别名 export default { list() { //查找所有数据 return request({ url: '/admin/core/integralGrade/list

weixin_47356044的博客 2163

TwinCAT3新手必看:5分钟搞定EtherCAT从站PDO动态配置(附电流变量添加技巧)

本文为TwinCAT3新手提供了EtherCAT从站PDO动态配置的快速入门指南。文章详细解析了Process Data Object(PDO)在实时数据交换中的核心作用,并分步演示了在TwinCAT3工程中扫描从站、动态添加与映射PDO(包括接收PDO和发送PDO)的完整操作流程。重点分享了如何灵活添加并监控如电机实际电流等关键工艺变量的高级技巧,并针对不同品牌驱动器的兼容性问题提供了实用的调试心法和解决方案,帮助工程师快速上手并优化工业自动化系统。

xgboost6farmer的博客 452

Pywinauto与Inspect.exe完美搭配:解决Windows应用UI自动化中的元素定位难题

本文详细介绍了如何将Pywinauto与Inspect.exe结合,以解决Windows应用UI自动化中的核心难题——元素定位。通过实战指南,阐述了如何利用Inspect.exe在UIA模式下精准侦察控件属性,并将这些信息转化为Pywinauto的稳健定位策略,从而高效自动化WPF、WinForms等现代框架构建的复杂桌面应用。

weixin_29297127的博客 519

【Django】Django视图views详解

视图 views 视图的工作流程 views的工作流程可以分为三个部分: 用户发送请求(request) 处理用户的请求(handler) 将处理后的数据返回给用户(response) Request简介 request是浏览器向服务器发送的请求对象(包含用户信息、请求内容、请求方法等) 可以使用dir(request)查看request对象中的所有方法(如下图): 常用的request对象方法 request.GET 获取url上?后面的参数 request.POST 获取p.

aqin1012的博客 23万+

Proteus 8.17安装部署全指南:避坑、汉化与STM32库配置

Proteus是一款广泛用于单片机仿真与电路设计的EDA工具,其核心价值在于支持嵌入式系统原型验证与教学实践。Proteus 8.17版本重构了许可证机制(LIC Engine)、依赖环境(VC++ 2019/NET 4.8)及路径加载逻辑,导致传统安装方法失效。掌握正确安装部署流程,是保障原理图绘制、VSM仿真(如51/STM32/ESP32)及外设波形观测(OLED、SPI、ADC)稳定运行的前提。本文聚焦Windows平台下零失败安装路径选择、权限配置、汉化实施与高频器件(如STM32F103)元件库

weixin_33377602的博客 402

Django学习笔记-视图(views)的使用

Django中可以使用views进行管理,类似于WPF的MVVM的ViewModel层,也相当于MVC架构的模Controller层。通过定义类,然后路由中就可以以类的形式进行处理。

向往的是:佛祖堂前的鱼,静静听禅。 2496

连接HP C7000 OA管理口操作文档

必备工具:1台便携式笔记本电脑、1根网线 2、 在C7000机箱背面找到 OA管理模块,如图:图标1和2为OA主备管理模块 将网线一端接至左边的OA管理网口,另一端接至便携式笔记本电脑网口,如图下位置: 在C7000液晶面板下查看OA管理口地址,如图,按下液晶面板的OK按钮 然后按下▼按钮调至Enclosure Info这一项后,按下OK按钮,输出界面如图:可以看到当前Active的OA管理口IP地址 比如显示地址为172.16.25.30,则个人笔记本电脑则配置172.16...

马晓援的博客 6011

mjlab 入门教程(一)MuJoCo 人形机器人强化学习训练 sim-to-real 部署框架

摘要:mjlab是一个结合IsaacLab API与MuJoCo简洁性的GPU加速机器人仿真框架,专为强化学习和机器人研究设计。它提供快速安装(支持uv、pip、conda和Docker)、核心功能(域随机化、NaN守护、观测历史/延迟、执行器/传感器系统)以及从IsaacLab的迁移指南。相比IsaacLab,mjlab更轻量、启动更快,直接构建在MuJoCo Warp上,避免了Omniverse开销。其哲学强调裸机性能、开发者体验和核心领域专注,适合需要快速迭代和直接MuJoCo控制的用户,而Isaac

2506_90492529的博客 2724

Django入门(十二) 视图views

常用于 form 表单,form 表单里的标签 name 属性对应参数的键,value 属性对应参数的值。数据类型是 QueryDict,一个类似于字典的对象,包含 HTTP POST 的所有参数。数据类型是 QueryDict,一个类似于字典的对象,包含 HTTP GET 的所有参数。每个视图函数都负责返回一个 HttpResponse 响应对象,对象中包含生成的响应。get():返回字符串,如果该键对应有多个值,取出该键的最后一个值。get():返回字符串,如果该键对应有多个值,取出该键的最后一个值。

weixin_42888180的博客 593

【华为机试真题 Python实现】分苹果

《华为机试真题》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!本文解法非最优解(即非性能最优)。A,B两个人把苹果分为两堆,A希望按照它的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算走位,12+5=9(1100+0101=9), B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多,输入苹果的数量和每个苹果重量,输出满足A的情况下获取的苹果总重量, 如果无法满足A的要

3412

Django写个人博客

环境搭建 创建虚拟环境: conda create -n Blog python==3.6 进入虚拟环境并安装django: source activate Blog pip install django==1.10 用命令创建一个BlogProject的django项目: django-admin startproject BlogProject 打开BlogProject: 设置环境项目的...

weixin_42635252的博客 1445

YOLOv11改进前必看 - YAML模型配置文件详细解读(再也不用担心通道数不匹配) 附网络结构图

YOLOv11的模型配置文件在中,里面包含以及,本文以目标检测模型文件为例(其他文件完全一致),详细介绍一下YOLOv11模型文件中各参数的含义。

Limiiiing的博客 5308

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

用django框架写一个博客项目

目录 1.查询所有的文章,完成文章的展示列表页 (1)查询所有文章(views.py) (2)将数据返回前端 (3)前端调用循环渲染数据 2.根据列表页提供的id查询文章详情 (1)查询详情 (2)返回前端 3.项目监听本机所有ip (1)修改pycharm配置 (2)修改settings.py配置 4.效果 5.富文本 6.分页 1.查询所有的文章,完成文章的展示列表...

也许会有_hui的博客 816

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Python Django(自写Views)

基本的上篇博客已经介绍了,这篇我们来绕点远路。自己写views以及数据库操作。 还是在上一个NBA项目的基础上,新建player模块。 1.Ctrl+Alt+R ==》startapp players 2.二话不说,就来新建模型 models.pyfrom django.db import models from team.models import team cla

qq_14814971的博客 1003

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Django编写个人博客(三)开始编写博客,常用标签过滤器,模板嵌套

1、使用虚拟环境 视频中用的是virtualenv,不过我倒腾了一下午也没安好,好在python3.7有自己的venv模块,可以进行类似管理 在对应文件目录命令行下执行 python -m venv blog 进入对应环境: 再执行Scripts\activate进入环境 安装Django 然后创建项目: 创建应用: 将项目拖入pycharm 2、博客基...

sdauguanweihong的博客 449

Django实现简单博客系统

Django实现简单博客系统第一节 - 基础1. 简单的导览图,学会不迷路2. 基本操作介绍3. 命令简单介绍4. mysite:所建项目的管理功能目录5. blog:我们创建的项目之一6. db.sqlite3 : 默认的数据库7. 网站配置:mysite/setting.py第二节 - 博客开发1. 编写博客的数据模型类2. 生成数据库迁移文件&创建数据表3. 创建超级管理员4. 发布博客文章5. 显示博客信息结束 本文中相关信息部分来源《跟老齐学Python:Django实战》 官网地址:

champion 1万+

Django 学习小组:博客开发实战第一周教程 —— 编写博客的 Model 与首页面

Django学习小组出品:一起来做一个简单的Blog第一周文档(教程) 本节是 django blog 项目的开篇,是 django 学习小组的集体学习成果。django学习小组是由我发起的一个促进 django 新手互相学习、互相帮助的组织。小组在一边学习 django 的同时将一起完成三个项目: 一个简单django blog,用于发布小组每周的学习和开发文档 djang

追梦人物的博客 1万+

html编写个人博客_Django 开发简易博客网站

本篇使用 Django 开发博客网站的核心内容,涉及 Django 、MySQL 、WampServer ;我比较喜欢 Django 框架的 MVC (模型、视图、控制器)的软件设计模式,其中我最喜欢 Django 与数据库的交互模式为 ORM (即关系-模型映射),这个过程不需要书写任何的 SQL 语句,对数据库的操作都转化成对类属性和方法的操作;Life is short, i need py...

weixin_39520210的博客 674

Django博客项目(三)—— 博客列表及搜索

前情提要: Django博客项目(一)—— 注册和登录页面 Django博客项目(二)—— 博客首页 本文继续介绍博客项目的第三部分,博客列表及博客搜索功能的实现。 效果图 本页面总共可看作五个部分: 博客信息 显示在页面上的信息包括:发表时间、分类、标题、内容、作者、回复数量。 分页显示 为了使页面整洁,使用分页的方法显示博客,每页显示四篇。 博客搜索 填入关键字,点击搜索图标,即...

kalath_aiur的博客 523

Django Blog|08 添加编写+发布博客功能

????????????关注我,和老表一起学Python、云服务器作者:老表来源:简说Python大家好,我是老表,这个系列将会更新我编写,项目的学习笔记,也是后面更新的一个重点,希望个人博客页面可以早点和...

简说Python的博客 748

Django编写个人博客(七)博客数目统计

修改views.py对应方法 注意分类统计我们用的注释方法,annotate 按日期统计,我们用的原始方法,传了一个字典 这里把公共方法抽取出来,返回一个字典 def get_blog_common(request,blog_all_list): paginator = Paginator(blog_all_list, settings.EACH_PAGE_NUMBER) ...

sdauguanweihong的博客 276

django实现views中的变量传递给其他函数_从0到1搭建个人博客-Django(五)

​你好,我是goldsunC让我们一起进步吧!从0到1搭建个人博客-Django(四)在以下链接快速回顾系列文章内容从0到1搭建个人博客-Django(一)从0到1搭建个人博客-Django(二)从0到1搭建个人博客-Django(三)从0到1搭建个人博客-Django(四)本篇内容简单改写下视图函数,然后编写模板(Template)做了个简单的页面标题输出。同时对Django模板语言做了介绍以及...

weixin_35460054的博客 387

『Django』视图views

theme: smartblue 本文简介 点赞 + 关注 + 收藏 = 学会了 上一篇 《『Django』路由urls》 中介绍了 Django 路由的用法,当时提到路由和视图其实是密不可分的合作伙伴。路由有点像饭店的服务员,引导顾客到指定的饭桌,然后根据顾客需求向厨房下单,厨师经过一番处理后,把煮好的菜传给顾客吃。这个厨师就是本文要介绍的『视图』。 什么是视图? 在 Dj...

weixin_39415598的博客 572
上一篇: 用Django写博客(二)建立管理后台
下一篇: 用Django写博客(四)编写Rss订阅
xugangjava
博客等级 码龄16年 83粉丝 72原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值