Django学习(七)---添加新文章页面

在template中添加add_article.html页面 (form  input)请求方法使用post

这个页面涉及到了两个响应函数 1)显示页面的响应函数  2)表单提交的响应函数

add_article.html如下:

<!DOCTYPE html>
<html>
<head>
    <title>增加新文章</title>
</head>
<body>
<form action="{% url ‘blog:edit_article‘ %}" method="post">
    {% csrf_token %}
    文章标题<input type="text" name=‘title‘ />
    <br>
    文章内容<input type="text" name=‘content‘/>
    <br>
    <input type="submit" value="提交">
</form>
</body>
</html>

1)显示页面的响应函数

views.py:

def add_article(request):
    return render(request,‘blog/add_article.html‘)

配置url,urls.py:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r‘^index/$‘,views.index),
    url(r‘^article/(?P<article_id>[0-9]+)/$‘,views.page,name=‘page‘),
    url(r‘^addarticle/$‘,views.add_article)
]

2)表单提交的响应函数

在表单里填写的内容,浏览器通过HTTP请求传递到后台的时候,这些数据都会被写在请求中,因此后台代码接受表单数据的过程实际上就是接受HTTP请求中夹带数据的过程。

编辑响应函数

使用 request.POST[‘ 参数名 ‘] 获取表单数据 (通过HTTP请求,传递的数据就放在request里,HTTP请求分为post,get等方法,request对不同方法创建了字典,用于存储数据,request.POST里面的键值对就是前端的数据)

取得数据之后,要放入数据库中(models类):

models.Article.objects.create(title,content)创建对象

views.py如下(return响应后的页面,这里跳转到了主页面)

def edit_article(request):
    title = request.POST.get(‘title‘,‘TITLE‘)# 第二个参数是默认值
    content = request.POST.get(‘content‘,‘CONTENT‘)
    models.Article.objects.create(title=title,content=content)
    articles = models.Article.objects.all()
    return render(request,‘blog/index.html‘,{‘articles‘:articles})

urls.py:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r‘^index/$‘,views.index),
    url(r‘^article/(?P<article_id>[0-9]+)/$‘,views.page,name=‘page‘),
    url(r‘^addarticle/$‘,views.add_article),
    url(r‘^eidtarticle/$‘,views.edit_article,name=‘edit_article‘),
]

add_article.html中表单form的action添加

<form action="{% url ‘blog:edit_article‘ %}" method="post">

打开服务器 localhost:8000/blog/editarticle

在表单中输入后,点击提交,页面会出现

禁止访问(403)

CSRF验证失败,响应中断

这是安全性问题,如果用post提交表单,要在form中加入 {% csrf_token %} 用于防范csrf(跨站请求伪造)

<!DOCTYPE html>
<html>
<head>
    <title>增加新文章</title>
</head>
<body>
<form action="{% url ‘blog:edit_article‘ %}" method="post">
    {% csrf_token %}
    文章标题<input type="text" />
    <br>
    文章内容<input type="text" />
    <br>
    <input type="submit" value="提交">
</form>
</body>
</html>

index.html中添加新文章加上url

<!DOCTYPE html>
<html>
<head>
    <title>第一篇博客</title>
</head>
<body>
<h1><a href="#">我的博客</h1>
<h3><a href="{% url ‘blog:add_article‘ %}">添加新文章</a></h3>
{% for article in articles %}
    <a href="{% url ‘blog:page‘ article.id %}">{{article.title}}</a>
    <br/>
{% endfor %}
</body>
</html>

打开服务器 localhost:8000/index, 点击添加新文章,完成文章标题和内容的填写,点击提交

时间: 2024-08-09 06:07:54

Django学习(七)---添加新文章页面的相关文章

Django学习之十三:提高页面开发效率减少冗余的模板系统

目录 Django 模板 模板语法 逻辑语法 函数式过滤器 内置filter 功能tag 注释 内置tag 导入三方tag and filter(load) 过滤器和功能tag的区别 自定义tag和filter 上下文数据 模板间关系 继承关系 包含关系 inclusion_tag关系 小结 Django 模板 模板按照我的理解,就是让html中内容不固定,让html内容已后端的方式动态起来(虽然前端mvvm框架也也开始有模板概念,所以广义说模板概念不限于后端).但是html基础的内容还是是固定

Django学习(七) 创建第一个Django项目

如果这是你第一次使用Django,你必须进行一些初始设置.即,您将需要自动生成一些代码,建立了Django项目. 从命令行.cd进入一个目录,你想要存储您的代码,然后运行以下命令: django-admin startproject mysite 这样就会在当前目录下创建一个为mysite的目录.在这个创建的mysite文件夹中默认包含了一些文件,文件结构目录如下: mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py

PDF添加新的文件我们可以使用什么编辑器

对于PDF文件来说我们重要的就是能够对PDF文件进行文件的编辑和阅读,可以轻松的解决这些问题,那么我们该如何去进行操作呢?小编教你们一个方法吧,可以利用迅捷PDF编辑器去进行文件的编辑! 迅捷PDF编辑器拥有完整的PDF编辑功能,可以对PDF文件进行任意编辑操作,满足你对pdf文件的所有编辑要求. 1.首先我们需要将最新版本的迅捷PDF编辑器下载到电脑上, 2.打开软件,并将需要进行编辑的PDF文件打开到软件中,现在我们就可以编辑pdf文件了. 3.点击"文档"功能,并选择"

学习ASP.NET Core Razor 编程系列十——添加新字段

学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目基本页面 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面 学习ASP.NET C

一个新人如何学习在大型系统中添加新功能和Debug

文章背景: 今年七月份正式入职,公司主营ERP软件,楼主所在的组主要负责二次开发,使用的语言是Java. 什么叫二次开发呢?ERP软件的客户都是企业.而这些企业之间的情况都有所不同,一套标准版本的企业资源管理系统必然难以百分之一百地满足每一家公司的所有要求.所以,在客户提出需求之后,程序员对系统进行增减修改,这就是二次开发. 另外,我们组还负责修复客户报上来的各种漏洞. 学会如何添加新模块新功能 为什么说从头到尾只看代码是不可行的? 基本上,财务系统跨越的年限都会有十几二十年,代码数千万级别,更

从零开始学习jQuery (七) jQuery动画-让页面动起来!

原文:从零开始学习jQuery (七) jQuery动画-让页面动起来! 本系列文章导航 从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式 从零开始学习jQuery (五) 事件与事件对象 从零开始学习jQuery (六) jQuery中的Ajax 从零开始学习jQuery (七) jQuery动画-让页面动起来! 从零

【转】TI Z-stack协议栈学习-添加新任务

开始学习TI的zigbee协议栈,无线龙的资料看得比较乱,在网络找到不少分析协议栈的文章,先贴上来,等自己有空了再好好原创一下吧. 协议栈版本:ZStack-1.4.3-1.2.1 TI Z-stack协议栈学习-添加新任务 1.Zstack中如何实现自己的任务 http://zhenling.chen.blog.163.com/blog/static/1940851920097710392587/ 在Zstack(TI的Zigbee协议栈)中,对于每个用户自己新建立的任务通常需要两个相关的处理

Django 学习笔记(七)数据库基本操作(增查改删)

一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.py 5.同步数据 二.安装IPython方便debug sudo apt-get install ipython3 安装成功后用python manage.py shell 会自动进入Ipython交互解释器中,没有安装Ipython只有前两行代码,只进入到Python shell 中. Python 3.5

linux学习(一) 在unbuntu下添加新用户

最近装了一个双系统,开始要折腾unbuntu了,Linux系统是一个多用户的操作系统,很多操作需要管理员权限才能完成,所有管理员权限是很重要的,对于初学者来说,我们最好用一个一般用户的权限就行了,相对于初学者的我们,对于很多东西还不懂,如果用了一个管理员权限,很可能造成很多不可逆的影响.遂捣鼓了一番,添加一个标准用户来供我们学习的一般需求. 第一步,我们打开系统设置:找到里面的用户账户选项: 第二步:对当前的用户进行解锁: 第三步:解锁之后我们就可以添加新用户了: 第四步:我们就可以创建新用户啦