首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...ListView 在我们的博客应用中,有几个视图函数是从数据库中获取文章(Post)列表数据的: blog/views.py def index(request): # ......因此 category 视图函数中多了一步,即首先需要根据从 URL 中捕获的分类 id 并从数据库获取分类,然后使用 filter 函数过滤出该分类下的全部文章。...首先是需要根据从 URL 中捕获的分类 id(也就是 pk)获取分类,这和 category 视图函数中的过程是一样的。...所以我们使了 self.kwargs.get('pk') 来获取从 URL 捕获的分类 id 值。
def __str__(self): return self.title 先看到第 1 步,用户在搜索框输入搜索关键词,因此我们要在博客上为用户提供一个搜索表单,HTML 表单代码大概像这样...: base.html <input...查找含有搜索关键词的文章 搜索的功能将由 search 视图函数提供,代码写在 blog/views.py 里: blog/views.py from django.db.models import...用户通过表单 get 方法提交的数据 Django 为我们保存在 request.GET 里,这是一个类似于 Python 字典的对象,所以我们使用 get 方法从字典里取出键 q 对应的值,即用户的搜索关键词...在 Pythonzhcn 社区的新手问答版块 发布帖子。
通过电子邮件共享帖子 创建表单 blog/forms.py from django import forms class EmailPostForm(forms.Form): name =...# # 如果正常发送 输出结果为1 配置视图 blog/views.py from .forms import EmailPostForm...(Post, id=post_id, status='published') sent = False if request.method == 'POST': form...'post_share') 显示模版中的视图 blog/templates/blog/post/share.html {% extends 'blog/base.html' %} {% block title...帖子详情 ? 发送测试 结果查看 ? 页面展示结果 ? 实际结果1 ? 实际结果2
修改django_project/blog/views.py,增加帖子的增删改查视图类方法: ? ? 修改django_project/blog/urls.py,添加帖子相关视图url规则: ?...修改django_project/blog/templates/blog/base.html添加发帖导航链接: ?...在django_project/blog/templates/blog下新建post_form.html帖子新建和更新表单: ?...在django_project/blog/templates/blog下新建post_detail.html帖子详细信息页面: ?...修改在django_project/blog/templates/blog/home.html,添加电子帖子标题导航链接和用户头像: ?
假设我们把视图函数的代码写在 blog/views.py 里: blog/views.py def search(request): q = request.GET.get('q')...用户通过表单提交的数据 django 为我们保存在 request.GET 里,这是一个类似于 Python 字典的对象,所以我们使用 get 方法从字典里取出键 q 对应的值,即用户的搜索关键词。...如果用户输入了搜索关键词,我们就通过 filter 方法从数据库里过滤出符合条件的所有文章。...首先是修改表单,打开 templates/base.html,在 header 标签里找到搜索表单部分的代码并修改,即添加 {% csrf_token %} 模板标签、修改搜索框的 name 属性和表单的...action 属性: templates/base.html ...
",{"info":list}) forloop.counter 索引从 1 开始算 forloop.counter0 索引从 0 开始算 forloop.revcounter 索引从最大长度到...普通Form表单的提交: <!...", {"form": form}) return render(request, "index.html", {"form": form}) 其他常用Form表单: <!...}) 给Form表单返回数据: Form表单可以返回默认数据,我们可以通过编号查询到指定数据的默认参数,并返回到编辑框中. # name:views.py from django.shortcuts import...") # 通过ID获取到记录 qset = models.DBHost.objects.filter(id=nid).values("host","title") dic = qset
首先获取到表单中的数据,如 ipaddress,tnsname以及执行的命令 2. 然后通过ipaddress,tnsname从数据库中查找获得用户密码用于连接 3....函数来获取Oracle数据文件的建立时间 导入方法见上面views.py文件的讲解 在monitor目录下建立 command目录用于存放相关程序 注意:这里需要建立一个名为__init__.py的空文件...to_char(b.creation_time, 'yyyy-mm-dd') creation_time from dba_data_files a, v$datafile b where a.file_id...oracle_command_result_5.html页面嵌入了oracle_command.html页面中,全程无页面跳转。...oracle_command_result_5.html ?
28.1.帖子分页功能完成 (1)manage.py 通过命令生成100个帖子,用于测试 @manager.command def create_test_post(): for x in range...post.author=author db.session.add(post) db.session.commit() print('测试帖添加成功') (2)front/views.py...',**context) (3)front_index/html ...{% endif %} {% endfor %} (2)front/views.py...#把当前板块id传到前端,前端添加“active”样式 } return render_template('front/front_index.html',**context
",{"error":error}) Form实现登录表单 # name:views.py from django.shortcuts import render,HttpResponse from django.forms import Form,fields...", {"form": form.errors}) return render(request, "index.html", {"form": form}) 其他常用Form表单 <!...}) 给Form表单返回数据 Form表单可以返回默认数据,我们可以通过编号查询到指定数据的默认参数,并返回到编辑框中. # name:views.py from django.shortcuts import...") # 通过ID获取到记录 qset = models.DBHost.objects.filter(id=nid).values("host","title") dic = qset
的官方文档中是这么定义视图的: "一类具有相同功能和模板的网页的集合",概念比较抽象,我们直接 拿比较简单常见论坛网站来举例,可能要求创建以下视图: 论坛首页 -- 列表页面,由时间先后倒叙展示新建的帖子...帖子详情 -- 详细展示帖子内容 评论处理 -- 为帖子增加评论的操作 在Django 中,系统所展示的页面和其他内容都是由视图派生而来,每一个视图可以表现为一个简单的Python函数,如果是基于类的视图的...>/', views.detail, name='detail'), ] 我们将 index.html 改造下,让其显示id,并且id 为超链接 <!...def detail(request, id): try: cat = Cat.objects.get(id = id) except Cat.DoesNotExist:...): cat = get_object_or_404(Cat, id=id) return render(request, 'demo_app/detail.html',{'cat':cat
听过前面几期的介绍,我们从如何安装django到连接数据库并建立第一个页面 接下来的专题讲述如何将日常运维需要的命令放到我们的监控系统中,具体见: 开发环境 操作系统:CentOS 7.3 Python...oracle_command/$',views.oracle_command, name='oracle_command'), ] oracle_command为执行Oracle命令的页面 ---- views.py...下面为oracle_command 对应的函数在views.py里面的写法 def oracle_command(request): result=oraclelist.objects.all(...首先我们建立base.html 页面作为基础模板 ?...{% extends “base.html” %} 表示的是继承base.html模板 后面是javascript脚本 这里写的是个表单(form) ? 该表单分为三个部分 1.
不过现在有个疑问,如果用户在提交表单的时候,都不满足我们表单的要求,比方说我们要求密码不得少于5位数,不能为空等,那样我们还需要用刚才的方法去验证么,其实根本就可以不用验证,这就是非法的字符。...因此,我们的错误提示信息需要修改,继续完善我们的views.py文件。...,因为它是我们从request.POST中得到的(request.POST也是从前端页面获取到的)。...session的安全护航 用户在向服务器发起第一次请求后,服务器会给用户随机地分派一个id(可以是用户的user id,也可以一段任意的字符串),我们把它叫做session id。...这主要归功于django自带的session功能: [4wvf9ze508.png] 如果你对cookie和session的原理感兴趣,可以浏览这篇文章: django从请求到返回都经历了什么?
对处理首页的视图函数来说,虽然其处理的对象一个是文章,另一个是帖子,但是其处理的过程是非常类似的:首先是从数据库取出文章或者帖子列表,然后将这些数据传递给模板并渲染模板。...ListView 在我们的博客应用中,有几个视图函数是从数据库中获取文章(Post)列表数据的: blog/views.py def index(request): # ......因此 category 视图函数中多了一步,即首先需要根据从 URL 中捕获的分类 id 并从数据库获取分类,然后使用 filter 函数过滤出该分类下的全部文章。...首先是需要根据从 URL 中捕获的分类 id(也就是 pk)获取分类,这和 category 视图函数中的过程是一样的。...所以我们使了 self.kwargs.get('pk') 来获取从 URL 捕获的分类 id 值。
views.commandresult, name='commandresult'), ] oracle_command为执行Oracle命令的页面 commandresult为执行完Oracle命令显示结果的页面 ---- views.py...下面为commandresult对应的函数在views.py里面的写法 ?...首先获取到表单中的数据,如 ipaddress,tnsname以及执行的命令 2. 然后通过ipaddress,tnsname从oraclelist数据库中查找获得用户名密码用于连接 3....最后把页面的标题以及表格的数据放到dic变量中传到 oracle_command_result_1.html模板文件中 ---- getprocessno函数 这里的getprocessno函数通过SID...文件来显示 oracle_command_result_1.html {{title}}{{row}} 该模板就是一行文字,通过将传过来的变量显示在前端页面
中获取到的位置参数(self.args)和关键字参数(self.kwargs)....显示用于编辑现有对象的表单的视图,重新显示具有验证错误信息的视图,并且保存对象.这里使用从对象模型自动生成的表单(除非手动制定表单类)....根据官网文档的例子,我们先在projtrack/views.py中添加项目新增和修改视图的代码: # projtrack/views.py ......{{ form.as_p }} 表示渲染表单为一系列的p标签,每个p标签包含一个字段: Subject:...: form.as_ul:渲染表单为一系列的li标签,每个li 标签包含一个字段 form.as_table:输出表单为一个HTML的table。
构建一个简单的表单提交页 polls/templates/polls/detail.html {{ question.question_text }} {% if error_message...="" value="投票" /> 代码解析: form表单提交的url为{%url 'polls:vote' question.id %}, 即表示访问polls/views.py的vote...将问题的相关选项遍历,以单选框显示 form表单用post方式提交数据 配置url polls/urls.py path('/vote/', views.vote, name...,))) 代码解析: request.POST['choice']接收表单页面提交的数据 将投票次数加1,并更新数据库 显示投票结果 polls/views.py from django.shortcuts..._404(Question, pk=question_id) return render(request, 'polls/results.html', {'question': question
= 0 return render(request,'func.html',locals()) # {'id':id} '''html''' {{ id|default:'views传的变量布尔值为...后端: 使用views.py 的 mark_safe 效果相同 Django 会自动对 views.py 传到HTML文件中的标签语法进行转义,令其语义失效。...forloop.counter: 顺序获取循环序号,从 1 开始计算 forloop.counter0: 顺序获取循环序号,从 0 开始计算 forloop.revcounter: 倒序获取循环序号,结尾序号为...在我们使用form表单的时候,经常报403权限错误,这里我们可以在HTML页面使用{% csrf_token %},表单提交数据才会成功,或者在settings.py将中间件注释掉也可以; 解析:...首先,向服务器发送请求,获取登录页面,此时中间件 csrf 会自动生成一个隐藏input标签,该标签里的 value 属性的值是一个随机的字符串,用户获取到登录页面的同时也获取到了这个隐藏的input标签
到目前为止,用户没有登录,他们也可以看到页面和表单。 ?...(4)显示主题里面所有的帖子 topic_posts.html内部,我们可以创建一个迭代主题帖子的for循环: 模板/ topic_posts.html {% extends 'base.html' %...P\d+)/reply/$', views.reply_topic, name='reply_topic'), (2)为帖子回复添加一个新表单 boards/forms.py from...boards/views.py def reply_topic(request, pk, topic_pk): topic = get_object_or_404(Topic, board__...我们现在可以更改首发帖子,以便在页面中更加强调它: templates / topic_posts.html {% for post in topic.posts.all %} <div
views.commandresult, name='commandresult'), ] oracle_command为执行Oracle命令的页面 commandresult为执行完Oracle命令显示结果的页面 ---- views.py...下面为commandresult对应的函数在views.py里面的写法 ?...首先获取到表单中的数据,如 ipaddress,tnsname以及执行的命令 2. 然后通过ipaddress,tnsname从oraclelist数据库中查找获得用户名密码用于连接 3....最后把页面的标题以及数据放到dic变量中传到 oracle_command_result_1.html模板文件中 ---- gettempusage函数 这里的ggettempusageetprocessno...文件来显示 oracle_command_result_1.html {{title}}{{row}} 该模板就是一行文字,通过将传过来的变量显示在前端页面
在之前的文章中我们了解到模板允许我们在多个地方重用代码段,非常适合动态HTML页面。使用模板将更复杂的HTML返回给浏览器。我们还将看到如何将变量作为上下文传递给模板。接下来开始: ?...修改django_project\blog\views.py: from django.shortcuts import render #定义一个list用来前台数据显示使用 posts = [...在django_project\blog\templates\blog下新建base.html,存放通用的博客网页模板信息: ? ?...在django_project\blog\templates\blog下新建home.html,存放博客首页内容,显示帖子列表: ?...在django_project\blog\templates\blog下新建about.html,显示关于页面信息: ?
领取专属 10元无门槛券
手把手带您无忧上云