提问者:小点点

__init__()在django中获得意外的关键字参数“user_id”


我有一个用于更新视图表单,如下所示:

class editpost(forms.ModelForm):
    class Meta:
        model = Posts
        fields = ['body']

然后是这样的景色:

@login_required
def post_edit(request, user_id, post_id):
    if request.user.id == user_id:
        post = get_object_or_404(Post, pk=post_id)
        if request.method == 'POST':
            form = editpost(request.POST, instance=post)
            if form.is_valid():
                ep = form.save(commit=False)
                ep.slug = slugify(form.cleaned_data['body'][:30])
                ep.save()
                messages.success(request, 'your post edited successfully', 'success')
                return redirect('account:dashboard', user_id)
        else:
            form = EditPostForm(instance=post)
        return render(request, 'editpost.html', {'form':form})
    else:
        return redirect('Posts:index')

和url.py,如下所示:

from django.urls import path
from . import views
app_name = 'Posts'
urlpatterns = [
    path('', views.index.as_view(),name='index'),
    path('<int:year>/<int:month>/<int:day>/<slug:slug>', views.detailPost,name='detail'),
    path('addpost/<int:user_id>', views.addpost,name='addpost'),
    path('delpost/<int:user_id>/<int:post_id>', views.delpost,name='delpost'),
    path('editpost/<int:user_id>/<int:post_id>', views.editpost,name='editpost'),
]

当我打开editpost url时,我得到了这个错误,我应该做什么来修复它?


共1个答案

匿名用户

在重定向函数中不需要user_id

return redirect('account:dashboard', user_id)
use this one
return redirect('account:dashboard')