django - 尝试编辑帖子:未找到带有参数“(”,)“的“编辑”的反向。尝试了 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 %}">
解决方案
您也必须提供用户名url
才能匹配:
<a href="{% url 'edit' username=user.username pk=question.pk %}">
如果您正在传递,则不必username
从上下文中传递request.user.username
. Coz,user
始终可以从模板的经过身份验证的页面访问。
推荐阅读
- c++ - 如何使用套接字 C++ 发送邮件
- python - Python:如何在 Tkinter 中关闭根窗口时获取
- git - 将一个git存储库移动到另一个时如何解决冲突
- python - 在旧功能仍在运行时启动新的异步功能
- python - OSMnx:一组起点和终点的最短路径
- nginx - 如何配置 nginx 在 Jelastic 上公开多个服务?
- django - 如何按小时对记录进行分组并返回实例
- ruby-on-rails - Rails 记录器有问题。未显示数据库查询参数
- shell - 执行小型 shell 脚本程序时出错
- python - 是否有根据类型提示检查类型的 python linter?