博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django实现文章编辑功能
阅读量:177 次
发布时间:2019-02-28

本文共 3510 字,大约阅读时间需要 11 分钟。

一 开发流程

1 单击修改文章图标,将该文章的id传给相应的视图函数。

2 视图函数从数据库中读取该文章id的相关内容。

3 将文章相关内容呈现在页面上,并且处于编辑状态,依然使用Markdown编辑器。

4 用户编辑之后,单击“提交”按钮,再次将页面中编辑的内容保存到上述id所对应的数据库记录中。然后跳转到合适的页面。

二 代码

1 修改前端页面mysite/templates/article/column/article_list.html,增加编辑按钮,核心代码如下:

{% for article in articles %}
{% endfor %}
序号 标题 栏目 操作
{
{ forloop.counter }}
{ { article.title }} {
{ article.column }}

2 编写视图函数mysite/article/views.py

@login_required(login_url='/account/login')@csrf_exempt# article_id用来接收文章id的,正是通过article_id,才能得到文章对象def redit_article(request, article_id):    if request.method == "GET":        article_columns = request.user.article_column.all()        article = ArticlePost.objects.get(id=article_id)        this_article_form = ArticlePostForm(initial={"title":article.title})        this_article_column = article.column        return render(request, "article/column/redit_article.html", {"article":article, "article_columns":article_columns, "this_article_column":this_article_column, "this_article_form":this_article_form})    else:        # 从前端页面会传过来article_id        redit_article = ArticlePost.objects.get(id=article_id)        try:            # 从前端页面会传过来column_id,title和body            redit_article.column = request.user.article_column.get(id=request.POST['column_id'])            redit_article.title = request.POST['title']            redit_article.body = request.POST['body']            redit_article.save()            return HttpResponse("1")        except:            return HttpResponse("2")

3 编写编辑的前端页面mysite/templates/article/column/redit_article.html

{% extends "article/base.html" %}{% load staticfiles %}{% block title %}article column{% endblock %}{% block content %}
{% csrf_token %}
标题:
{
{this_article_form.title}}
栏目:
内容:
{% endblock %}

4 编写URL

from django.conf.urls import urlfrom . import viewsurlpatterns = [    url(r'^article-column/$', views.article_column, name="article_column"),    url(r'^rename-column/$', views.rename_article_column, name="rename_article_column"),    url(r'^del-column/$', views.del_article_column, name="del_article_column"),    url(r'^article-post/$', views.article_post, name="article_post"),    url(r'^article-list/$', views.article_list, name="article_list"),    url(r'^article-detail/(?P
\d+)/(?P
[-\w]+)/$', views.article_detail, name="article_detail"), url(r'^del-article/$', views.del_article, name="del_article"), url(r'^redit-article/(?P
\d+)/$', views.redit_article, name="redit_article"),]

三 测试

1 编辑前页面

2 点击编辑后的效果

3 点击发布页面跳转后的效果

 

 

转载地址:http://yugj.baihongyu.com/

你可能感兴趣的文章