删除
urls.py
第一种方法
url(r'^del_art/', views.del_art, name='del_art'),
第二种方法
url(r'^del_art_id/(\d+)/', views.del_art_id, name='del_art_id')
views.py
第一种方法
def del_art(request):
if request.method == 'GET':
# 删除文章
# 思路:首先要知道删除文章的id
id = request.GET.get('id')
Artcile.objects.filter(pk=id).delete()
return HttpResponseRedirect(reverse('art:art_list'))
第二种方法
def del_art_id(request, id):
if request.method == 'GET':
# 查询文章并删除
Artcile.objects.filter(pk=id).delete()
return HttpResponseRedirect(reverse('art:art_list'))
art.html
第一种方法
删除
第二种方法
删除
编辑
urls.py
url(r'edit_art/(\d+)/',views.edit_art,name='edit_art'),
views.py
def edit_art(request,id):
# 编辑文章 和提交文章用的同一个页面
if request.method == 'GET':
# 点击编辑返回提交文章页面
artcile=Artcile.objects.filter(pk=id).first()
return render(request,'add_artcile.html', {'artcile':artcile})
if request.method == 'POST':
# 编辑完成后点击提交数据
form = EditArtForm(request.POST,request.FILES)
if form.is_valid():
title = form.cleaned_data['title']
desc = form.cleaned_data['desc']
content = form.cleaned_data['content']
icon = form.cleaned_data['icon']
artcile = Artcile.objects.filter(pk=id).first()
#Artcile.objects.filter(pk=id).update(title=title,desc=desc,content=content,icon=icon)
artcile.title = title
artcile.desc = desc
artcile.content = content
if icon:
artcile.icon = icon
artcile.save()
return HttpResponseRedirect(reverse('art:art_list'))
else:
# 验证失败返回错误信息
artcile = Artcile.objects.filter(pk=id).first()
return render(request, 'add_artcile.html', {'form': form, 'artcile': artcile})
Artform.py
编辑提交的时候进行验证
class EditArtForm(forms.Form):
# min_length=5长度必须大于5 ,required=True表示必须填写,error_messages表示自定义的错误信息
title = forms.CharField(min_length=5,required=True,
error_messages={'required':'文章标题是必填项',
'min_length':'文章标题必须写5个以上字符'})
desc = forms.CharField(min_length=10,required=True)
content = forms.CharField(required=True)
icon = forms.ImageField(required=False
)
art.html
删除
add_artcile.html
跳转到提交页面时给标题,描述,内容提供默认值
标题
简短描述
内容
首图:
{% if artcile.icon %}
{% endif %}