这是我的第一个django项目,我正在努力完成它。 我一直在努力完成编辑工作。当用户单击按钮时,它会为该文章发送no(int),并获取与no相关的信息并在页面上显示。用户可以使用相同的表单编辑该帖子,当用户点击提交时,它会重定向到home.html
然而,我做的函数不断向我发送一条错误消息,即使我没有使用任何带2个参数的函数,它需要2个参数。
这是views.py
@login_required
def edit_article(request, article_no):
article = Article.objects.filter(pk=article_no)
form = ArticleForm(request.POST, instance=request.article)
if form.is_valid():
form.save()
messages.add_message(request, messages.SUCCESS, _('Article correctly saved.'))
# If the save was successful, redirect to another page
redirect_url = reverse('blog/home.html')
return HttpResponseRedirect(redirect_url)
else:
form = ArticleForm(instance=request.article)
return (request, {'form': form}, context)
这是detail.html中的表单,其中没有向edit_article.html发送任何值
<form action="{% url 'blog:edit_article' %}" method="post" style="display: inline;">
{% csrf_token %}
<input type="hidden" name="no" value="{{ item.no }}" />
<button type="submit">edit></button>
</form>
答案 0 :(得分:1)
article_no
arg并没有通过POST提交神奇地进入函数调用。您需要将其提供给url
代码:
{% url 'blog:edit_article' item.no %}
当然,假设您有一个url模式,其中包含与此视图/视图名称关联的相应命名组。
答案 1 :(得分:0)
如果您正在谈论此功能,它确实收到了多个Arg,它收到了您正在谈论的No和请求对象
def edit_article(request, article_no):
...
答案 2 :(得分:0)
如果您的视图需要参数,则必须在url templatetag中提供参数,如下所示:
{%url'帐户:detail_account'用户名=用户名%}