首页 > 解决方案 > 尝试编辑帖子:未找到带有参数“(”,)“的“编辑”的反向。尝试了 1 种模式:['users/(?P[^/]+)/编辑/(?P[0-9]+)$']

问题描述

我试图能够使用在我的views.py 中引用我的edit_post 函数的标签来编辑问题。我认为问题是因为我没有将上下文传递到正确的视图中以显示它,但我不确定如何修复它。出现此错误 - 未找到带有参数 '('',)' 的 'edit' 的反向操作。尝试了 1 种模式:['users/(?P[^/]+)/edit/(?P[0-9]+)$']

视图.py

@login_required(login_url='sign_in')
def dashboard(request, *args, **kwargs):

    username = request.user.username

    filtered_questions = Question.objects.filter(user_id=username)

    context = {
    'filtered_questions': filtered_questions,
    }

    return render(request, 'users/dashboard.html', context)

def edit_post(request, pk):
    question = Question.objects.get(pk=pk)
    if rerquest.method == 'POST':
        form = QuestionForm(request.POST, instance=question)
        if form.is_valid():
            form.save()
            question.user = request.user
        
            return redirect('/')
        else:
            form = QuestionForm(instance=question) 
    else:
        form = QuestionForm(instance=question)

    context = {
        'form': form,
        'question': question,
    }

    return render(request, 'users/edit_question.html', context)

网址.py

urlpatterns = [
    path('<username>', views.dashboard, name='dashboard'),
    path('<username>/upload', views.upload, name='upload'),
    path('<username>/edit/<int:pk>', views.edit_post, name='edit')
]

带有编辑问题按钮的模板

<a href="{% url 'edit' question.pk %}">

编辑:

context = {
    'filtered_questions': filtered_questions,
    'username':username,
}

试图将用户名作为上下文变量传递并像这样在模板中呈现它

 <a href="{% url 'edit' username question.pk %}">

标签: djangodjango-modelsdjango-formsdjango-views

解决方案


您也必须提供用户名url才能匹配:

<a href="{% url 'edit' username=user.username pk=question.pk %}">

如果您正在传递,则不必username从上下文中传递request.user.username. Coz,user始终可以从模板的经过身份验证的页面访问。


推荐阅读