django - 未找到任何参数的“编辑”反向。尝试了 1 种模式:['articles/edit/(?P[0-9]+)/$']
问题描述
我是 Django 的初学者,现在我正在开发一个博客应用程序。在文章编辑部分我被卡住了,我不知道为什么它会显示这个错误。搜索了很多,找不到答案
NoReverseMatch at /articles/edit/2/
Reverse for 'edit' with no arguments not found. 1 pattern(s) tried: ['articles/edit/(?P<pk>[0-9]+)/$']
edit_articles 部分在
视图.py
@login_required(login_url="/accounts/login/")
def edit_articles(request, pk):
article = get_object_or_404(Article, id=pk)
if request.method == 'POST':
form = forms.CreateArticle(request.POST, instance=article)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.save()
return redirect('articles:myarticles')
else:
form = forms.CreateArticle(instance=article)
return render(request, 'articles/article_edit.html', {'form': form})
article_edit.html
{% extends 'base_layout.html' %}
{% block content %}
<div class="create-article">
<form class="site-form" action="{% url 'articles:edit' %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="jumbotron">
<div class="heading col-md-12 text-center">
<h1 class="b-heading">Edit Article</h1>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
{{ form.title }}
</div>
</div>
<div class="col-md-6">
<div class="form-group">
{{ form.slug }}
</div>
</div>
<div class="col-md-6">
<div class="form-group">
{{ form.thumb }}
</div>
</div>
<div class="col-md-12">
<div class="form-group">
{{ form.body }}
</div>
</div>
</div>
<button type="submit" class="btn btn-primary btn-lg btn-block">Update</button>
</div>
</form>
</div>
{% endblock %}
网址.py
from django.urls import path
from . import views
app_name = 'articles'
urlpatterns = [
path('', views.article_list, name='list'),
path('create/', views.article_create, name='create'),
path('edit/<int:pk>/', views.edit_articles, name='edit'),
path('myarticles/',views.my_articles, name='myarticles'),
path('<slug>/', views.article_detail, name='details'),
]
my_articles.html
4th 的那个按钮是用主键触发编辑功能并重定向到编辑页面
<tbody>
{% if articles %}
{% for article in articles %}
<tr class="table-active">
<th scope="row">1</th>
<td>{{ article.title }}</td>
<td>{{ article.date }}</td>
<td><a href="{% url 'articles:edit' pk=article.pk %}"><button type="button" class="btn btn-info">Edit</button></a></td>
{% endfor %}
</tr>
{% else %}
<tr>
<td colspan=4 class="text-center text-danger">Oops!! You dont have any articles.</td>
</tr>
{% endif %}
解决方案
在您的模板 article_edit.html - post url 需要一个 pk,您需要传递一个 pk,就像您为模板 my_articles.html 做的一样
<div class="create-article"><form class="site-form" action="{% url 'articles:edit' pk=form.instance.pk %}" method="post" enctype="multipart/form-data">{% csrf_token %}...
这样 django 就知道你正在编辑哪篇文章
推荐阅读
- c# - 如何使用 rowindex 删除数据库项
- javascript - 如何在android上设置反应本机导航?
- c++ - icc 崩溃:编译器能否发明抽象机器中不存在的写入?
- bash - 在 shel 中的浮点数学中使用 bc 失败
- javascript - 检查对象数组是否具有属性
- ruby-on-rails - 在 Rails API + React SPA 中防止重复请求
- connection - 任何逻辑。建模过程库。库存元素(如 Source 或 Queue)与自定义类之间的连接
- javascript - 根据下拉和输入字段搜索数据表
- r - 试图与 POSIXct 时间间隔相交,但得到 NA 结果
- javascript - 使用数组创建字符串,如何防止“未定义”打印?