day08 删除和编辑

删除

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 %}

你可能感兴趣的:(day08 删除和编辑)