作者: zifanwang 发布于2020-05-10
首先在article/views.py中增加修改文章的函数article_update():
def article_update(request, id):
article = ArticlePost.objects.get(id=id)
if request.method =="POST":
article_post_form = ArticlePostForm(data=request.POST)
if article_post_form.is_valid():
article.title = request.POST['title']
article.body = request.POST['body']
article.save()
return redirect("article:article_detail", id=id)
else:
return HttpResponse("表单内容有误,请重新填写")
else:
article_post_form = ArticlePostForm()
context = { 'article': article, 'article_post_form': article_post_form}
return render(request, 'article/update.html', context)
再在templates/article中创建update.html模板并写入:
{% extends "base.html" %}
{% load static %}
{% block title %}
Edit
{% endblock title %}
{% block content %}
<div class="container">
<div class="row">
<div class="col-12">
<br>
<form method="post" action=".">
{% csrf_token %}
<div class="form-group">
<label for="title">Title</label>
<input type="text" class="form-control" id="title" name="title" value="{{ article.title }}">
</div>
<div class="form-group">
<label for="body">Body</label>
<textarea type="text" class="form-control" id="body" name="body" rows="12">{{ article.body }}</textarea>
</div>
<button type="submit" class="btn btn-primary">submit</button>
</form>
</div>
</div>
</div>
{% endblock content %}
接着修改article/urls.py和增加修改文章入口:
from django.urls import path
from . import views
app_name = 'article'
urlpatterns = [
path('list/', views.article_list, name='article_list'),
path('article-detail/<int:id>/', views.article_detail, name='article_detail'),
path('article-create/', views.article_create, name="article_create"),
path('article-delete/<int:id>', views.article_delete, name="article_delete"),
path('article-update/<int:id>/', views.article_update, name="article_update"),
]
再修改detail.html:
{% extends "base.html" %}
{% load static %}
{% block title %}
article
{% endblock title %}
{% block content %}
<div class="container">
<div class="row">
<h1 class="col-12 mt-4">{{ article.title }}</h1>
<div class="col-12 alert alert-success">Author: {{ article.author }}</div>
.<a href="#" onclick="confirm_delete()">Delete</a>
.<a href="{% url "article:article_update" article.id %}">Edit</a>
<div class="col-12">
<p>{{ article.body|safe }}</p>
</div>
</div>
</div>
<script>
function confirm_delete(){
var r=confirm("Wanna delete?");
if (r==true)
{
window.location='{% url "article:article_delete" article.id %}';
}
}
</script>
{% endblock content %}
接着我们运行服务器(python manage.py runserver)再看一下效果,打开一篇文章:
可以看到增加了Edit链接,我们点击链接。可以看见可以编辑文章了,
修改后点击submit就可以保存修改后的文章了。