django 获取 axios get 过来的数据_从0到1搭建个人博客Django(七)

本文介绍了如何在Django博客系统中添加文章发布功能,包括创建表单、处理表单提交、修改视图函数、编写模板以及设置URL路由。通过这些步骤,用户可以在博客首页直接提交文章,而不仅仅是通过后台。此外,还展示了如何在导航栏添加写文章的入口,使用户可以更方便地创建新内容。
摘要由CSDN通过智能技术生成

你好,我是goldsunC

让我们一起进步吧!

从0到1搭建个人博客-Django(七)

在以下链接快速回顾系列文章内容

从0到1搭建个人博客-Django(一)

从0到1搭建个人博客-Django(二)

从0到1搭建个人博客-Django(三)

从0到1搭建个人博客-Django(四)

从0到1搭建个人博客-Django(五)

从0到1搭建个人博客-Django(六)

发表文章

经过前几篇文章的操作,我们已经简单建立了一个有首页、后台、能够看文章的页面了。不够暂时有个小问题,就是博客首页的那篇文章是之前我们在后台建立的。这只有管理员能够操作,如果想要提交新的文章只能在后台写,那如果我们想在首页提交文章怎么办呢?我们来完善一下功能。

认识表单

对于“表单”一些朋友可能比较陌生,其实它们在互联网上随处可见,如注册页面中的用户名和密码输入、性别选择、提交按钮等都是用表单相关的标记定义的,简单地说,“表单”是网页上用于输入信息的区域,用来实现网页与用户的交互。在HTML中,表单是在 ...中的一些元素。处理表单是挺复杂的一件事情,还记得Django的后台吗?许多不同类型的数据可能需要在一张表单中准备显示,渲染成HTML,使用方便的界面进行编辑,传到服务器,验证和清理数据,然后保存或跳过进下一步处理。而Django的表单功能可以简化上述工作的大部分内容。Django表单系统的核心组件是 Form类,它能够描述一张表单并决定它如何工作及呈现。在 article中创建 forms.py文件,写入如下代码:
#   引入表单类
代码中的 ArtclePostForm类继承了Django的表单类 forms.ModelForm,并在类中定义了内部类 Meta,指明数据来源,以及表单中应该包含的数据模型的哪些字段。还记得我们创建的数据模型类 ArticlePost吗? created参数字段默认为当前时间, update字段自动生成,因此我们不需要填入。对于 author字段暂时固定为id=1的用户,也不需要填入。剩下的 titlebody就是我们需要通过表单填入的内容了。改写 article/views.py,添加如下代码,包含依赖的模块和一个视图函数以处理写文章的请求:
# 引入redirect重定向模块
这个函数的作用是,当视图函数接收到一个客户端的 reuqest请求时,首先根据 request.method判断用户是要 提交数据(POST)还是 获取数据(GET)
  • POST:将POST给服务器的表单数据赋于article_post_form实例,然后使用Django内置方法.is_valid()判断提交的数据是否满足模型的要求。

  • 如果满足要求,保存表单中的数据,此时commit=False说明先不要提交数据到数据库,因为还少一个字段author,然后指定author为id=1的用户,再提交数据到数据库,并通过redirect返回文章列表。redirect的作用是可以通过url地址的名字,反向解析到对应的url。

  • 如果不满足要求,则返回一个字符串"表单内容有误,请重新填写。"

  • GET:返回一个空的表单类对象,提供给用户填写。

编写模板

这个编写模板是编写的哪个模板呢?刚才我们编写了关于提交文章的视图函数,那现在编写的当然是写文章的页面了(模板)!在 templates/article/下新建 create.html文件,写入如下代码:
html>
我们的重点不在于HTML的书写,不过还是简单说一下上面的 create.html文件: div是区块标签,可以将网页分割为独立的、不同的部分,以实现网页的规划和布局。
之间相当于一个盒子,可以设置外边距、内边距、宽和高,同时内部可以容纳段落、 标题、表格、图像等各种网页元素。 ...之间的内容就是需要提交的表单。 method="post"指定了表单提交的方式为POST(和视图函数中的 request.method相联系), action="."指定了表单提交的地址为默认的当前 url{% csfr_token %}必须包含在表单中,不然会发生错误。 标签中的 name=''属性指定了当前文本框提交的数据的名称,它必须与表单类中的字段名称相对应,否则服务器无法将字段和数据正确的对应起来。最后,为了打开刚编写的 create.html模板,我们还需要干嘛?模板是由视图函数调用的,那视图函数由谁调用?得有它自己的路由呀,所以最后一步需要干嘛?如下:打开 article/urls.py,加入以下代码:
'article-create/',views.article_create,name=
知道加到哪儿吗?不知道的话可没认真学哦。然后大功告成,启动服务器,进入 http://127.0.0.1:8000/article/article-create/地址,出现如下界面:

1701387f3bda69d1ea05e664195c76ea.png

来到了我们写好的 create.html模板页面,然后写上点东西,点击完成,跳转至:

97d1c542bfd6b69449d60ac782bc1af0.png

我们刚才添加的内容已经加进去了,你可以多次输入刚才的url到写文章界面,不过那么麻烦怎么行?我们在首页加个入口,点击入口直接能进去多好,入口加在哪里呢?记得我们网页的基本构成吗?有三个部分, base.htmlheader.htmlfooter.html,其中 header.html是网页的导航栏,入口适合放在这里:打开 templates/header.html文件,加入如下代码:
<li class="nav-item">
知道加在哪里吗?当然加在文件中的 的标签之前,文章中的 标签只有一个,里面是 文章的菜单,链接指向 article-list。因此我们之前点击这个按钮就会回到首页。OK,这个时候再去 http:127.0.0.1:8000/article/article-list/看看:

863b5225022826758cfa0ebce7fce7fa.png

注意页面右上角已经出现的 写文章的按钮,点一下试试,就导向了 http://127.0.0.1:8000/article/article-create/。OK,现在我们就可以容易的增加文章了,不过还不能删除哈,只能在后台删除,下文我们讲讲如何增加删除功能。

参考文献:

  1. https://www.dusaiphoto.com/article/2/

  2. http://c.biancheng.net/view/7288.html

  3. http://www.python3.vip/tut/webdev/django/

 • end • 

走在路上

goldsunC

e3527dd7ff1eaeb6e58bf0e0a08e7ef3.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值