37,743
社区成员




re_path(r'^$',views.blogposts,name = 'blogposts')
re_path(r'^edit_blog/(?P<blog_id>\d+)/$',views.edit_blog,name = 'edit_blog')
class BlogPost(models.Model):
'''定义博客模型'''
#标题字段
title = models.CharField(max_length = 200)
#正文字段
text = models.TextField()
#时间字段
date_added = models.DateTimeField(auto_now_add = True)
#返回标题字段,这样我们可以看到标题
def __str__(self):
return self.title
class BlogPostForm(forms.ModelForm):
class Meta:
model = BlogPost
fields = ['title','text'] #获取标题和正文
labels = {'title':'','text':''} #指定空标签
widgets = {'text':forms.Textarea(attrs={'cols':80})}#修改默认宽度
def edit_blog(request,blog_id):
'''编辑博客'''
#获取当前博客的id
blog = BlogPost.objects.get(id = blog_id)
t = blog.title
#处理两种请求情形
if request.method != 'POST':
#返回使用当前内容填充的表单
b = BlogPostForm(instance = blog)
else:
#当请求为POST时,利用当前内容和request.POST的内容填充表单
b = BlogPostForm(instance = blog,data = request.POST)
#当内容合格时,保存内容
if b.is_valid():
b.save()
#在保存之后返回博客主页
return HttpResponseRedirect(reverse('blogs:blogposts'))
#将内容发送给模板
context = {'blog':blog,'t':t,'b':b}
return render(request,'blogs/edit_blog.html',context)
{% extends "blogs/base.html" %}
{% block content %}
<p>{{ t }}</p>
<p>{{ b }}</p>
<form action="{% url 'blogs:edit_blog' blog.id %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<button name="submit">保存修改</button>
</form>
{% endblock content %}