Django开发博客-(5)完善主页开发_2
来源:互联网 发布:js监听页面大小变化 编辑:程序博客网 时间:2024/06/03 16:27
接上一章继续。
博客书写(编辑)页面
编辑页面已经实现接下来是编辑响应的函数部分。
使用request.POST[‘参数名’]来获取表单数据
models.Article.objects.create(title, content)来创建对象
具体实现如下。
首先增加一个html文件为edit_action.html
然后views增加一个响应,在这里我们选择编辑完成返回主页
def edit_action(request): title = request.POST.get('title', 'page_title') content = request.POST.get('content', 'page_content') models.Article.objects.create(title=title, content=content) //以上是创建新的数据库对象 //下面是获取数据库对象显示(每次都这样获取确实效率很低 //可以用redis缓存一下) articles = models.Article.objects.all() return render(request, 'myblog/myblog.html', {'articles':articles})
随之urls增加
url(r'^edit/action$', views.edit_action, name='edit_action'),
然后修改一下html文件的表单响应
<form action="{% url 'blog:edit_action' %}" method="post">{% csrf_token %}
特别注意要添加{% csrf_token %},因为Django安全性要求很高,否则会出现错误。
最终效果如下
图1 增加新文章
最后就是区别新文章和修改文章
新文章没有标题和内容,而修改文章则需要含义原标题和内容,也就是修改文章页面有文章对象。
所有我们可以根据文章的ID来获取文章对象,id是从1开始,我门设置当id=0时是新文章页面,否则是带有文章对象的编辑页面
接下来来编写代码
首先是修改响应代码views:
def edit_page(request, article_id): #0代表新文章页面(没有文章对象传递给前端) if str(article_id) == '0': return render(request, 'myblog/edit_page.html') #否在id代表了文章对象的id article = models.Article.objects.get(pk=article_id) return render(request, 'myblog/edit_page.html', {'article':article})
上面修改的views给edit_page添加了一个参数,所以urls修改让其能接受一个参数。
urlpatterns = [ url(r'^blog/$', views.myblog), url(r'^article/(?P<article_id>[0-9]+)$', views.article_page, name='article_page'), url(r'^edit/(?P<article_id>[0-9]+)$', views.edit_page, name='edit_page'), url(r'^edit/action$', views.edit_action, name='edit_action'),]
然后修改前端代码
让主页的新建文章带有一个0的参数,表明是新文章
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>博客主页</title></head><body>{% for article in articles %} <a href="{% url 'myblog:article_page' article.id %}">{{ article.title }}</a> <br/>{% endfor %}<h3> <!--增加新文章页面会给edit_page函数传递默认参数 0 --> <a href="{% url 'myblog:edit_page' 0 %}">增加新文章</a></h3></body></html>
最后修改编辑页面edit_page.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>编辑</title></head><body><form action="{% url 'myblog:edit_action' %}" method="post"> {% csrf_token %} <!--这个页面提交 会反馈给edit_action响应 在此相当于填充了一个数据对象 然后在edit_action 中获取这个对象 检查id是0还是1 以此来创建新文章 还是原来的文章--> <input type="hidden" name="article_id" value="{{article.id | default:'0'}}"/> <label>博客标题 <input type="text" name="title" value="{{article.title}}" style="width:300px;"/> </label> <br/> <label>博客内容 <input type="text" name="content" value="{{article.content}}" style="width:300px;height:200px"/> </label> <br/> <input type="submit" value="点击提交"></form></body></html>
上面完成了页面设置,接下来只需要编辑页面的获取需要根据id是0(新页面没有文章对象)是1带有文章对象,即有数据。
修改views的响应也就是编辑
def edit_action(request): title = request.POST.get('title', 'page_title') content = request.POST.get('content', 'page_content') article_id = request.POST.get('article_id', '0') if article_id == '0': # 创建一个数据库对象(新) 然后返回主页 # 主页需要显示全部的数据库列表 models.Article.objects.create(title=title, content=content) articles = models.Article.objects.all() return render(request, 'myblog/myblog.html', {'articles':articles}) # 获取当前需要编辑的文章对象 然后传递给前端 article = models.Article.objects.get(pk=article_id) article.title = title article.content = content article.save() return render(request, 'myblog/atricle_page.html', {'article':article})
查看效果
图2 编辑文章
阅读全文
0 0
- Django开发博客-(5)完善主页开发_2
- Django开发博客-(5)完善主页开发_1
- Django 开发学习笔记(6)- 开发博客主页和所有话题列表页面
- Django个人博客开发
- Flask Web 开发 博客文章_2
- python3.5基于django 开发博客
- Django开发博客-(1)Django简介
- 利用Django快速开发博客
- django开发博客(1) 入门
- django开发博客(1) 入门
- Django 博客开发教程 10
- Django 博客开发教程 11
- Django 博客开发教程 12
- Django 博客开发教程 13
- Django 博客开发教程 14
- Django 博客开发教程 15
- Django 博客开发教程 16
- Django开发博客-(3)Models
- Kotlin基础教程-代理属性
- Mysql学习笔记(八):日期转换-int转date和date转int
- 关于configure中build,target,host中的若干问题
- linux磁盘管理常用命令介绍。df、du、mount、unmount命令介绍
- Could not load JDBC driver class [com.mysql.jdbc.Driver]
- Django开发博客-(5)完善主页开发_2
- vue.js操作select
- smack
- phalcon框架
- Access提示Insert Into 语法错误解决办法总结
- [python基础理论]python学习笔记4
- Spark性能调优(十)之Spark统一内存管理
- XAMPP使用技巧(为mysql配置环境变量)
- git 文件添加、变更的提交