django 用户删除自已发布的信息的时候.怎么取得自已的id? 代码里总得取不到
在代码里这样定义的删除url
url(r'^info/?id=(?P<pk>\d+)/del/$', 'gqinfo.views.info_del', name='info_del'),
在views.py里这样定义:
@login_required
def info_del(request):
gqinfo_del=Gqinfo.objects.get(id=pk)
if gqinfo_del.user != request.user:
return HttpResponseForbidden()
gqinfo_del.delete()
return HttpResponseRedirect('/')
这样删除不成功.
下面这个办法也不行:
@login_required
def info_del(request):
if request.GET.has_key('gqinfo_id'):
gqinfo_id = request.GET['gqinfo_id']
try:
gqinfo_del=Gqinfo.objects.get(id=gqinfo_id)
if gqinfo_del.user != request.user:
return HttpResponseForbidden()
else:
gqinfo_der.delete()
except:
return Http404
return HttpResponseRedirect('/')
else:
return Http404
这样也不删不了.
总是取不到url里面的pk
另外问一下.要用户删除信息还要先删除该信息相关的评论吗?
如果不写代码.用户只删信息.那评论还会在数据库里还是跟着信息自动被删除?
[解决办法]
要多看文档,文档里专门有一节“Named Groups”!pk会作为参数传给info_del,info_del的定义应该是:
@login_required
def info_del(request, pk):
# can use pk now
...
评论是否会自动删除,取决于你所用的数据库是否支持及table是如果定义的。SQL支持cascading delete(http://baike.baidu.com/view/690105.htm)。NOSQL大概不支持。