【发布时间】:2014-08-05 08:54:21
【问题描述】:
我无法为我的 django 应用定义 URL。
我想要这样当我打字时,
http://example.com/post/3 :: 我可以阅读帖子
http://example.com/post/3/edit :: 我可以编辑帖子
目前,我将其定义如下:
url(r'^post/(?P<id>\d+)/edit/$',
'board.views.edit_post',
name='edit_post'),
url(r'^post/(?P<id>\d+)',
'board.views.view_post',
name='view_post'),
但这似乎不起作用,因为当我点击链接到
的“编辑”链接时"/post/{{ post.id }}/edit"
我在地址栏中获得了预期的网址,但没有进入编辑视图...
====================================
--编辑--
@login_required
def edit_post(request, id):
if id:
post = get_object_or_404(Post, id=id)
if post.owner_user != request.user:
return HttpResponseForbidden()
# else:
# post = Post(owner_user=request.user)
if request.POST:
form = PostEditForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('')
else:
form = PostEditForm()
return (request,'edit_post.html', {
'form': form})
还有
def view_post(request, id):
#context = RequestContext(request)
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
form = form.save(commit=False)
form.owner = request.user
form.parent_post = get_object_or_404(Post, id=id)
form.comment_type = 0
form.save()
return HttpResponseRedirect('')
else:
form = CommentForm()
return render(request,'view_post.html', {
#'comment' : get_object_or_404(Comment, parent_post = id),
'comment': Comment.objects.filter(parent_post=id),
'form': form,
'post': get_object_or_404(Post, id=id)
})
【问题讨论】:
-
您确定正确命名了视图函数?这些路线看起来不错。
-
最后用“/”尝试会发生什么?例如:“/post/{{ post.id }}/edit/”
-
嗯,这很奇怪。在这种情况下,让我添加我的 view_post 和 edit_post 视图
-
@GustavoMeira 我得到:AttributeError at /post/5/edit/ 和 'tuple' 对象没有属性 'get'
-
因为您在
edit_post末尾错过了对render的呼叫:您只是直接返回参数。