Django 1.10:view function()只需2个参数(给定1个)

时间:2017-02-13 16:32:20

标签: python django

这是我的第一个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>

3 个答案:

答案 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'用户名=用户名%}